58 votes

Comment voir les commits qui ont été fusionnés dans un commit de fusion ?

Si my-feature-branch a été fusionné avec my-main-branch comment puis-je voir quels commits ont été fusionnés à partir de my-feature-branch ?

66voto

Jesse Points 633

git log abc123^..abc123
montre les commits qui ont été fusionnés dans merge-commit abc123 .

Créer un git alias log-merge pour une réutilisation facile :

$ git config --global alias.log-merge \
'!f() { git log --stat "$1^..$1"; }; f'
$ git log-merge abc123

Pour une version en une ligne :

$ git config --global alias.log-merge-short \
'!f() { git log --pretty=oneline "$1^..$1"; }; f'

51voto

Colin Hebert Points 40084

Si vous voulez voir toutes les commits fusionnées dans la dernière fusion, vous pouvez essayer cela :

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

Voici un exemple de mon journal actuel :

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

Si je ne veux que les commits liés à la dernière fusion, je dois utiliser git log -1 --merges --pretty=format:%P ce qui me donne les parents de la première fusion disponible :

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

Maintenant que je sais quels parents je dois suivre, j'ai besoin de leur base commune que je peux obtenir grâce à git merge-base --octopus (--octopus est là juste au cas où) :

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

Maintenant avec git log Je peux rechercher tous les commit depuis la base jusqu'à l'actuel HEAD :

$ 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

Si vous êtes un peu perfectionniste, vous pouvez aussi faire ceci :

$ 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

Maintenant je pense que je vais garder ceci comme un alias :)

Le site --graph --pretty=oneline --abbrev-commit sont facultatives.


Ressources :

0voto

Noufal Ibrahim Points 32200

Si vous avez un commit de fusion (disons a2345 ) et dire git log -1 a2345 il vous indiquera les noms des parents (c'est-à-dire les commits qui ont été fusionnés dans ce commit). Est-ce que c'est ce que vous cherchez ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X