2012-05-14 56 views
8

我們的git存儲庫中有一個文件正在工作,我想知道誰將這個文件合併到一個分支中。你如何找到誰合併到一個分支的git提交?

我有提交散列標識提交(可以說552a976f1a25f9bad57efb9455e951f6b7b3367f)引入該文件,並且我知道該文件位於分支staging

如何找到合併上述提交到staging分支的提交的散列?我想查找合併的用戶以及合併的日期。

+0

這是一個實際的合併(與快進合併相對)嗎?你不能只使用'git log path/to/the file'(或'gitk')? – svick

+0

git log顯示提交文件的人的名字,我想查找誰將合併提交到臨時分支上。 –

回答

1
git log <commit-id>..<branch> --ancestry-path --merges --reverse 

會給你,因爲你有興趣和的當前狀態<commit-id>所發生合併的列表<branch>。根據您的合併工作流程,您感興趣的合併可能是列表中的第一個或下一個。

這將是大有裨益的

git log --oneline --graph --decorate --ancestry-path --boundary <commit-id>..<branch> 

看可視化歷史相關的部分爲您<commit-id>靠近圖形的底部(其將屬於「圖形界面」 - 標有o而非*) 。

1
git log -1 --merges <hash> 

將顯示自<hash>提交(包括其自身)以來最近的合併提交日誌。

+1

這是一個很好的解決方案,有時合併是第一次合併,但並非總是如此。就我而言,這是我感興趣的第二次合併。 –

+0

'git log '將在** 之前顯示您提交**,而不是之後(即它將顯示的祖先)。所以,這個命令會顯示最後一個合併*在您的提交之前,而不是將它帶到主分支的合併。 –

2

branches

如果我理解正確的話,你有C5,而你正在尋找C6。如果是這樣的話,你可能正在尋找:

git rev-list --merges HEAD --not <hash> --reverse 

它會給你你的哈希提交後發生的合併提交列表。我在此命令中使用HEAD,認爲您在master(在本例中)或staging(在您的情況下)。

在一個不太複雜的環境中,你可能正在爲之後發生的第一合流你提交的...但是如果你沒有這樣的機會,你可以試試:

git log --graph --decorate HEAD...<hash>^ 

或者任何圖形工具來探索你的歷史記錄(如gitk)...

相關問題