2013-01-04 6 views
18

Sprawdzałem X zobowiązuje pomocą następującego polecenia:Twój oddział wyprzedza "origin/master" przez X zatwierdza. Jak znaleźć X commitów?

git log --author=<my-name> -<X> 

Ale problemem jest to, że przypadkowo pociągnął kod z innego repozytorium i dodaje zobowiązuje z repozytorium do mojego lokalnym repozytorium git.

Tak więc nie mogę użyć powyższego polecenia, ponieważ nowe zatwierdzenie zawiera innych autorów.

+1

jeśli kopia robocza jest czysta (bez niezatwierdzone zmiany) można wrócić do stanu przed pociągnięciem z http://stackoverflow.com/q/1223354/11343 – CharlesB

+0

@CharlesB "git reset --hard" nie przejdzie do stanu przed odciągnięciem. Wiadomość wciąż nadchodzi. –

+1

musisz znaleźć wartość skrótu zatwierdzenia przed pobraniem i przekazać ją do 'reset --hard', przeczytaj pytanie, które odesłałem – CharlesB

Odpowiedz

27

Komenda

git log origin/master..master 

pokazuje zobowiązuje które są na master ale nie na origin/master.

+0

Nie będzie pokazywać zatwierdzeń. Pokazuje, że niektóre zatwierdzenia istnieją w moim lokalnym repozytorium i moim zdalnym repozytorium. –

+0

Może źle zrozumiałem twoje pytanie ... – tobiasbayer

+0

Akceptuję odpowiedź na podstawie głosów, które otrzymałeś: D –

-1

Używam tego:

git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative 

pokazuje zobowiązuje jak na wykresie, z wszystkich oddziałów i ich nazwy.

Moja rada jest, aby utworzyć alias dla niego w ~/.gitconfig

+0

Myślę, że zawiera ono zatwierdzenia. Ale pokazuje zbyt wiele informacji. Jak rozpoznać X Commity z tego? –

+0

Możesz oczywiście dodać do niego '--author = - - -. Czy nie jest to, co chciałeś? – amorfis

2

zrobiłem alias dla tego polecenia, które wymienia się zobowiązuje, które nie zostały zsunięte.

git log --branches --Nie --remotes --decorate --oneline

który jest odmianą cxreg poleceń zamieszczonych w Viewing Unpushed Git Commits.

Wiele innych użytecznych sposobów analizowania drzewa zatwierdzenia w tym wpisie.

1

Notacja treeish..treeish działa dokładnie tak, aby zobaczyć zatwierdzenia, które są obecne w drugim odwołaniu, ale nie w pierwszym. Z pomocą dziennika git:

Regularne D..M oblicza zestaw zatwierdzeń, które są przodkami M, ale wyklucza te, które są przodkami D. Jest to przydatne, aby zobaczyć, co się stało z wiodących historii do M od D, w tym sensie, że "co M ma, że ​​nie istnieje w D".

Używanie tego albo z git log lub git show można wyprowadzać lista, która zawiera jeden wiersz dla każdego popełnić pressent w różnicy D..M:

git show -s --oneline branch..HEAD 

lub

git log --oneline branch..HEAD 

parę, która z liczba słów i możesz wyprowadzić dokładnie taką liczbę zatwierdzeń, jaką szukasz:

git log --oneline branch..HEAD | wc -l 
+0

Próbowałem powyższych poleceń. W ogóle nie otrzymuję żadnych wyników. –

+0

Jeśli nie otrzymujesz żadnych błędów, a 'show/log' jak wyżej nic nie drukujesz, oznacza to, że zakładając' A..B', 'B' zawiera już wszystkie zatwierdzenia w' A', i to tam nie są zobowiązaniami do drukowania. Spróbuj odwrócić go lub spróbuj z kilkoma zobowiązaniami, z których jesteś pewien różnicy. Na przykład, jeśli spróbujesz tego z 'HEAD^.. HEAD', musisz uzyskać pojedyncze zatwierdzenie. – LopSae

+0

Powyższe komentarze odnoszą się tylko do lokalnego repo. jak porównać ze zdalnym repo? –