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?
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:
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
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?
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