web-dev-qa-db-ja.com

以前のgitマージに関連するコミットを表示する

たとえば、hotfixブランチからdevelopブランチを作成し、2つのコミットを作成して、これをdevelopブランチにマージし、hotfixブランチを破棄するとします。

マージの一部であったコミットを確認するにはどうすればよいですか?それは可能ですか?

51

最後のマージでマージされたすべてのコミットを見たい場合は、それを試すことができます:

git log $(git merge-base --octopus $(git log -1 --merges --pretty=format:%P)).. --boundary

これが私の現在のログの例です:

$ git log --graph --pretty=oneline --abbrev-commit
* 44899b9 pouf
*   8f49f9c Merge branch 'test'
|\  
| * 3db39ca test
* | 69f431c pif
* | df1f51c lala
|/  
* 8fae178 pif2
* 20f8ba6 init

最後のマージに関連するコミットのみが必要な場合は、git log -1 --merges --pretty=format:%Pを使用する必要があります。これにより、使用可能な最初のマージの親が取得されます。

$ git log -1 --merges --pretty=format:%P
69f431cec7859b61d33c7503c9431ceea2aaf3e0 3db39ca3ab1e8f70462db23d94590628b5e7ad7b

追跡する必要がある親がわかったので、git merge-base --octopusを介して取得できる共通の基盤が必要です(念のため、-タコがいます):

$ git merge-base --octopus $(git log -1 --merges --pretty=format:%P)
8fae178666e34a480b22e40f858efd9e7c66c3ca

これでgit logを使用して、現在のHEADおよびvoilàへのベース以降のすべてのコミットを検索できます。

$ git log $(git merge-base --octopus $(git log -1 --merges --pretty=format:%P)).. --boundary --graph --pretty=oneline --abbrev-commit 
* 44899b9 pouf
*   8f49f9c Merge branch 'test'
|\  
| * 3db39ca test
* | 69f431c pif
* | df1f51c lala
|/  
o 8fae178 pif2

あなたが少し完璧主義者なら、これを行うこともできます:

$ git log $(git merge-base --octopus $(git log -1 --merges --pretty=format:%P))..$(git log -1 --merges --pretty=format:%H) --boundary --graph --pretty=oneline --abbrev-commit 
*   8f49f9c Merge branch 'test'
|\  
| * 3db39ca test
* | 69f431c pif
* | df1f51c lala
|/  
o 8fae178 pif2

これをエイリアスとして保持します。

PS:もちろん、--graph --pretty=oneline --abbrev-commitオプションを維持する必要はありません


リソース:

37
Colin Hebert

マージコミットがab2f8173git log ab2f8173^..ab2f8173はマージしたコミットを表示します。

これをgitエイリアスに変換して簡単に再利用する方法は次のとおりです。

$ git config --global alias.merge-log '!f() { git log --stat "$1^..$1"; }; f'
$ git merge-log 0865c12
54
Jesse

マージコミットがある場合(a2345) そして、言います git log -1 a2345、それは親の名前を教えてくれます(つまり、このコミットにマージされたコミット)。それはあなたが探しているものですか?

1
Noufal Ibrahim