2013-03-21 16 views
8

Chcę dowiedzieć się ostatniej rzeczy, którą pchnąłem, a nie ostatniej rzeczy, którą popełniłem, ale pchnął.Git dowiedz się ostatniego zatwierdzenia, pchnąłem

Czy jest do tego polecenie git?

Kontekst: chcę zgnieść jakieś rewizje przed scalanie moje dev_branch z odgałęzieniem głównej, ale powiedziano mi, że nie może nic, że jest już popychane rebase (czy to prawda?).

Chciałbym więc wiedzieć, jakie było ostatnie zatwierdzenie, którego nie mogę uwzględnić w tym podziale.

Odpowiedz

24

Jeśli masz na myśli ostatni popełnić ty zepchnięte na master gałęzi wtedy, zakładając, że pilot jest origin:

git rev-parse origin/master 

To pokaże popełnić identyfikator końcówce master oddziału pochodzenia origin, jako lokalne repozytorium jest obecnie świadomy. Może to oznaczać, że zatwierdzenie jest czyimś zatwierdzeniem, jeśli ktoś inny pchnął zatwierdzenia po tym, co zrobiłeś i od tego czasu masz fetch ed.

git show -p origin/master 

Komenda ta daje informacje o zatwierdzenie, w tym ID popełnienia, autor wiadomości dziennika i diff do jego rodzica commit (s).


Jeden z moich ulubionych Git poleceń za to dokładnie ten rodzaj kontroli:

git log --pretty=oneline --abbrev-commit --graph --decorate --all 

Spowoduje to wyświetlenie piękny wykres ASCII-art historii popełnił, a każdy popełnić pokaże żadnych bibl że celują w to. W ten sposób można, na pierwszy rzut oka, zobaczyć gałęzie i połączenia w historii i łatwo zobaczyć, gdzie origin/master jest w stosunku do własnego master.

+0

wow, dzięki cdhowie, że ostatnie polecenie jest niesamowite, jest naprawdę użyteczne! i prawdopodobnie powinien zadać to pytanie w oddzielnym, ale to, co jest uważane za lepsze -git rebase -i -git scalić --squash co chcę zrobić, to połączyć moje dev oddziału z panem, ale mam 100 + commmits skompresowane w powiedzeniu 4. Nie 1, ponieważ są prawdopodobnie 4 kluczowe punkty w jego historii – chrispepper1989

+2

Jeśli popchnąłeś swoją gałąź dev, to zgniatanie jest złym pomysłem, ponieważ inni będą mogli rozgałęzić się z twojej pracy. Jeśli jest publiczny, nie zmieniaj go. Jeśli nie jest to publiczne, to 'git rebase -i' pozwala wybrać, które wyraźne zatwierdzenia chcesz zachować w historii i które chcesz zgnieść w nich. 'git merge --squash' da ci tylko możliwość utworzenia jednego zatwierdzenia, więc ostatecznie zależy od tego, ile obiektów commit chcesz. – cdhowie

Powiązane problemy