如何找到最后一次未完成的提交?
问题描述:
我想使用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
有没有一种方法可以在一个步骤中做到这一点,这样我就不必算我的提交?
答
使用下面的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~{}
希望这对你有所帮助。
答
如何:
git log --format='%H %an' | grep -v Adam | cut -d ' ' -f1 | xargs -n1 git log -1
哪里Adam
是作者的名字即你
@ {蓝} '而不是HEAD〜N,它会做你想要的自动化。 –
如果你有一个跟踪分支,你甚至不需要它,这是默认的:'git rebase'就可以做到这一点。 – jthill
@AndrewC“u”代表用户名吗?或者你的意思是'@ {u}'? – AlanH