学习写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)!