我想使用git rebase -i HEAD~n
来压缩我的提交,但为了做到这一点,我通常必须执行git log
并手动计算所有提交的数量,直到下一次提交未提交由我。换句话说,我会看到类似这样的东西
commit 89073409kiejroijer
Author: AlanH
commit 89073409kiejroijer12903
Author: AlanH
...
commit 89073409kiejroijer83
Author: AlanH
commit 890789754239kldjrjsafd
Author: JohnSmith
所以在约翰提交之前我会算上所有的。然后执行git rebase -i HEAD~n
有没有办法一步完成这个,这样我就不必计算我的提交了?
答案 0 :(得分:2)
git log --author="Adam" --invert-grep -n1
给出第一个与Author =“Adam”
不匹配的提交使用<commit-id>
来修改
git rebase -i <commit-id>
答案 1 :(得分:1)
无需计算,只需使用您想要的提交ID,在您的示例中,您可以看到890789754239kldjrjsafd
。
要以编程方式查找其他答案中的搜索,我能找到的最简单的搜索是
git log --format=%h\ %an|awk '!/ Your Name/{print $1;exit}'
答案 2 :(得分:0)
使用下面的shell可以解决您的问题。
git log | cat | grep Author | awk -F: "{print $1}" | grep -v "yourname" | wc -l
此命令会在上次提交之前计算提交编号。
然后使用git rebase -i HEAD~n
或在一个命令中使用它。
git log | cat | grep Author | awk -F: "{print $1}" | grep -v "yourname" | wc -l | xargs -I {} git rebase -i HEAD~{}
希望这对你有所帮助。
答案 3 :(得分:0)
怎么样:
git log --format='%H %an' | grep -v Adam | cut -d ' ' -f1 | xargs -n1 git log -1
Adam
是作者姓名,即