2016-12-26 72 views
2

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

@ {藍} '而不是HEAD〜N,它會做你想要的自動化。 –

+0

如果你有一個跟蹤分支,你甚至不需要它,這是默認的:'git rebase'就可以做到這一點。 – jthill

+0

@AndrewC「u」代表用戶名嗎?或者你的意思是'@ {u}'? – AlanH

回答

2
git log --author="Adam" --invert-grep -n1 

給人的第一承諾不匹配作者=「亞當」

使用該<commit-id>如果您使用的是跟蹤分支只需指定「變基

git rebase -i <commit-id> 
+0

很棒的發現!不會比這更好。可能會添加'--format =%H'來給出提交ID。 – jthill

+0

@jthill所以將整個命令是:'git log --author =「Adam」--invert-grep -n1 --format =%H ' – AlanH

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~{} 

希望這對你有所幫助。

0

如何:

git log --format='%H %an' | grep -v Adam | cut -d ' ' -f1 | xargs -n1 git log -1 

哪裏Adam是作者的名字即你

1

無需來算,只需要使用你想要的提交ID,在您的例子中,你可以看到它的890789754239kldjrjsafd

爲了找到它編程在其他的答案將工作的搜索,我能找到的最簡單的搜索

git log --format=%h\ %an|awk '!/ Your Name/{print $1;exit}' 
+0

'n'應該是一個整數,但它如何取得一個提交ID? – AlanH

+0

替換整個事情,無論如何,git只是將'HEAD〜n'翻譯成提交ID,直接給它。 – jthill

相關問題