自学内容网 自学内容网

学习写git的脚本

第一部分

1、 trap一个test

2、 字符编码的解决(拷贝出错的文件)

#!/bin/bash

echo_err(){
echo -e "\e[31m$1\e[0m"
}

add_tmp=`pwd`/add_tmp
list_tmp=`pwd`/.tmp
#中途推出删除零时文件  (ctrl+c)
# trap 'rm $add_tmp' SIGINT

#中途推出删除零时文件  (exit 退出)
trap 'rm $add_tmp' EXIT


com_dirs=(
'u-boot'
'kernel'
'device'
# 'build'
# 'hardware'
'system'
'frameworks'
# 'packages'
# 'vendor'
)


git_sta(){
# echo_err "$1/$2/"
mod_list=`git status -s | grep ^\ M | sed 's/...//'`
add_list=`git status -s | grep ^?? | sed 's/...//'`
for i in ${mod_list[*]}
do
# echo_err "$2/$i"
mkdir -p $list_tmp/$1/`dirname $i`
cp -ra $i  $list_tmp/$1/$i
echo_err "\tmodified:\t"$1/$i
done

for i in ${add_list[*]}
do
mkdir -p $list_tmp/$1/`dirname $i`
cp -ra $i  $list_tmp/$1/$i
echo "$1/$i" >> $add_tmp
done
}

find_dirs(){
touch $add_tmp
for i in ${com_dirs[*]}
do
git_dirs=`find  $i -name \.git  -exec dirname {} \;`

for j in ${git_dirs[*]}
do
cd $j/

#权限检查和细微的变化 关掉
git config core.filemode false

#git commit/status 的中文编码
git config --local core.quotepath false

rt=`git status -s | grep ^\ M | wc -l `
if [ $rt -ne 0 ];then
git_sta $j
fi


#去除的 git commit/status 的中文编码的属性
git config --local  --unset core.quotepath
cd - >/dev/null
done

done
}

show_files(){
echo ""
echo "Untracked files:"
echo "  (use \"git add <file>...\" to include in what will be committed)"
echo ""
while read i
do
echo_err "\t$i"
done < $add_tmp
echo ""
}

main(){
find_dirs
show_files
}

main




# '''
# :<


# # git config --local --list  #本地git的一些属性

# git config --add user.name "newNameLocal"
# git config --add user.email "newNameLocal"
# git config --global --add user.name "newNameGlobal"
# git config --global --add user.email "newNameGlobal"

# git config --local --add 







# 使用以下命令查看全局配置信息:
# git config –global –get core.autocrlf
# 如果返回“true”,表示Git会自动将文本文件的换行符转换为适应当前操作系统(Windows、Linux、Mac)的格式。
# 如果返回“false”,表示Git不会进行自动转换。

# 使用以下命令查看默认编码格式
# git config –global –get core.eol
# 如果返回“crlf”,表示Git将行结束符转换为Windows格式的CrLf。
# 如果返回“lf”,表示Git将行结束符转换为Unix格式的Lf。
# 如果返回空白或其他值,表示Git使用当前操作系统的默认行结束符格式
# 默认情况下,Git不会更改文件的编码,只会处理行结束符。

# git config –get core.eol
# 查看项目级别的默认编码格式:





# 查找core.fileEncoding配置项。这个配置项用于指定Git的默认编码格式

# core.fileEncoding=<编码格式>
# 如果配置项的值是UTF-8,那么Git的默认编码格式就是UTF-8。
# 如果在配置文件中没有找到core.fileEncoding配置项,那么Git的默认编码格式将使用操作系统的默认编码格式。
# 可以通过修改Git的配置文件来更改默认编码格式。在终端或命令行中输入以下命令来打开Git的配置文件:
 # git config –global –edit
# 这会打开一个文本编辑器,其中包含Git的全局配置文件。可以在文件中添加或修改core.fileEncoding配置项来指定新的默认编码格式。




# git config  --local --get core.fileEncoding
# git config --local --add core.fileEncoding "utf-8"


# git status的时候显示中文文件名不乱码
# #不对0x80以上的字符进行quote,解决git status/commit时中文文件名乱码
# git config --global core.quotepath false
# git config --local core.quotepath false
# git config --local --get core.quotepath
# git config --local --add core.quotepath false




 # git config --unset core.newKey

# git config --unset user.name "newName"
 
# git config --unset user.email "newName"



# EOF
# '''


# ls显示中文文件名  windows的git
# C:\Program Files\Git\etc\git-completion.bash:
# alias ls='ls --show-control-chars --color=auto'



原文地址:https://blog.csdn.net/weixin_44763594/article/details/142499493

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!