如何找到我没做过的最后一次提交?

时间:2016-12-26 02:49:27

标签: git

我想使用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

有没有办法一步完成这个,这样我就不必计算我的提交了?

4 个答案:

答案 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是作者姓名,即