Niektóre polecenia git przyjmują rodzica jako wersję; inne (takie jak git revert), jako numer nadrzędny. Jak zdobyć rodziców w obu przypadkach. Nie chcę używać polecenia dziennika graficznego, ponieważ często wymaga to przewinięcia długiego drzewa w celu znalezienia drugiego rodzica.
git rev-list może również wyświetlać skróty rodziców, chociaż najpierw wyświetli hash dla zatwierdzenia:
$ git rev-list --parents -n 1 <commit>
Jeśli chcesz zbadać rodziców, możesz odnieść się do nich bezpośrednio karatami jako <commit>^1i <commit>^2np .:
git show <commit>^1
To uogólnia; w przypadku scalania ośmiornicy możesz odnieść się do n- tego rodzica jako <commit>^n. Możesz odnosić się do wszystkich rodziców <commit>^@, chociaż to nie działa, gdy wymagane jest pojedyncze zatwierdzenie. Dodatkowe przyrostki mogą pojawiać się po zastosowaniu n th składni nadrzędnej (na przykład <commit>^2^, <commit>^2^@), natomiast nie mogą one po ^@( <commit>^@^nie obowiązuje). Aby uzyskać więcej informacji na temat tej składni, przeczytaj rev-parsestronę podręcznika .
Odpowiadając na moje własne pytanie: wyniki polecenia „git rev-list --parents -n 1 <somehash>” to: <somehash> <parent1> <parent2>. To znaczy rodzice są numerowani.
git log
igit show
wypisuje bardzo różne rzeczy, gdy jest tylko jeden rodzic. Wolisz,git log
jeśli chcesz spójności.git (v2.17.1)
. Nie widzęMerge
pliku nagit log -1
wyjściu.Poniżej znajduje się najprostszy sposób, w jaki znalazłem, aby zobaczyć rodziców połączenia
źródło
git cat-file -p 3706454
jest taki sam, ale jeszcze krótszy :)git log --pretty=raw -1 3706454