Pokaż commity zaangażowane w wcześniejsze łączenie Gita

Powiedzmy, że tworzę hotfix gałąź z gałęzi develop, wykonam dwa commity, połączę to z powrotem do gałęzi develop i zniszczę gałąź hotfix.

Jak mogę się dowiedzieć, które commity były częścią scalenia? Czy to możliwe?

Author: alex, 2011-05-31

3 answers

Jeśli chcesz zobaczyć wszystkie commity połączone podczas ostatniego scalania, możesz spróbować:

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

Oto przykład mojego aktualnego dziennika:

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

Jeśli chcę tylko commity związane z ostatnim scaleniem, muszę użyć git log -1 --merges --pretty=format:%P, co daje mi rodziców pierwszego scalenia:

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

Teraz, Kiedy wiem, których rodziców muszę śledzić, potrzebuję ich wspólnej bazy, którą mogę uzyskać przez git merge-base --octopus (--octopus jest tam na wszelki wypadek):

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

Teraz z git log mogę szukać każdy commit od bazy do aktualnej głowy i 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

Jeśli jesteś trochę perfekcjonistą, możesz również to zrobić:

$ 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

Teraz chyba zatrzymam to jako alias:)

PS: oczywiście nie musisz trzymać --graph --pretty=oneline --abbrev-commit opcji


Zasoby:

 33
Author: Colin Hebert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-28 16:33:27

Powiedz, że Twój commit scalający jest ab2f8173, git log ab2f8173^..ab2f8173 pokaże commity, z którymi się połączył.

Oto jak przekształcić to w git alias dla łatwego ponownego użycia:

$ git config --global alias.merge-log '!f() { git log --stat "$1^..$1"; }; f'
$ git merge-log 0865c12
 42
Author: Jesse,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-15 21:26:22

Jeśli masz commit merge (say a2345) I say git log -1 a2345, powie Ci on imiona rodziców (tzn. commity, które zostały połączone w tym commicie). Tego szukasz?

 1
Author: Noufal Ibrahim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-31 17:22:53