たとえば、hotfix
ブランチからdevelop
ブランチを作成し、2つのコミットを作成して、これをdevelop
ブランチにマージし、hotfix
ブランチを破棄するとします。
マージの一部であったコミットを確認するにはどうすればよいですか?それは可能ですか?
最後のマージでマージされたすべてのコミットを見たい場合は、それを試すことができます:
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
オプションを維持する必要はありません
リソース:
マージコミットがab2f8173
、git log ab2f8173^..ab2f8173
はマージしたコミットを表示します。
これをgit
エイリアスに変換して簡単に再利用する方法は次のとおりです。
$ git config --global alias.merge-log '!f() { git log --stat "$1^..$1"; }; f'
$ git merge-log 0865c12
マージコミットがある場合(a2345
) そして、言います git log -1 a2345
、それは親の名前を教えてくれます(つまり、このコミットにマージされたコミット)。それはあなたが探しているものですか?