直接分享
OLD_IFS="$IFS"
IFS=","
arr=($1)
IFS="$OLD_IFS"
filename=$(date +%y%m%d)_$(date +%H%M%S)
touch $filename.sql
for s in ${arr[@]}
do
echo -e "\033[41;33m$s\033[0m"
if [ $3 ] && [ $4 ]
then
git log --after=$3 --before=$4 $2 --pretty=format:"%h %an %cd %s" | grep $s
git log --after=$3 --before=$4 $2 --pretty=format:"%h %an %cd %s" | grep $s | awk '{print $1}' | tr "\n" " "|sed -e 's/,$/\n/' >> $filename.txt
elif [ $3 ]
then
git log --after=$3 $2 --pretty=format:"%h %an %cd %s" | grep $s
git log --after=$3 $2 --pretty=format:"%h %an %cd %s" | grep $s | awk '{print $1}' | tr "\n" " "|sed -e 's/,$/\n/' >> $filename.txt
elif [ $4 ]
then
git log --before=$4 $2 --pretty=format:"%h %an %cd %s" | grep $s
git log --before=$4 $2 --pretty=format:"%h %an %cd %s" | grep $s | awk '{print $1}' | tr "\n" " "|sed -e 's/,$/\n/' >> $filename.txt
else
git log $2 --pretty=format:"%h %an %cd %s" | grep $s
git log $2 --pretty=format:"%h %an %cd %s" | grep $s | awk '{print $1}' | tr "\n" " "|sed -e 's/,$/\n/' >> $filename.txt
fi
done
将此脚本复制下来命名为.sh文件,丢到git仓库中,即可在git bash中使用
输出格式为:
提交哈希值前八位 提交人 提交时间 提交记录
命令格式为:
sh git-log.sh "grep 参数" "提交人" "起始时间" "截止时间"
注意:
1.grep参数通常是提交的编号且与某个需求绑定,比如"#29901",某些时候提交附带的注释不规范很难查询
2.时间参数格式为"YYYY-MM-DD-HH-MM-SS",如果不附带时分秒信息,git会自动将时分秒设置为当前时间,造成某些查询出错
3.grep参数可以有多个,中间用英文逗号分隔