2012-01-09 14 views
15

Jak uzyskać listę wszystkich poleceń push do lub z konkretnego pilota w git?Uzyskaj listę wszystkich naciśnięć z Git

Dla mojego przypadku, byłoby to OK, aby uruchomić na zdalnym lub lokalnych repo.

Dla punktów bonusowych, w jaki sposób uzyskać listę wszystkich udanychpush poleceń?

Odpowiedz

15

Metoda ta będzie tylko daje udanych naciska, ale nadal może być przydatna:

Po wciśnięciu do oddziału w pilocie, który odpowiada jednemu z odległych śledzenie oddziałów i że Push zakończy się pomyślnie, gałąź zdalnego śledzenia zostanie zaktualizowana. W domyślnym przypadku sklonowania z repozytorium zazwyczaj oznacza to, że pomyślne przekazanie do master w zdalnym origin zaktualizuje gałąź zdalnego śledzenia origin/master. Zmiany origin/master są rejestrowane w reflog, więc można znaleźć udanych naciska z:

git reflog show origin/master 

Na przykład, w jednym z moich repozytoriów, zobaczysz:

17f2303 refs/remotes/origin/[email protected]{0}: fetch origin: fast-forward 
dd7e0ac refs/remotes/origin/[email protected]{1}: fetch origin: fast-forward 
1788ffe refs/remotes/origin/[email protected]{2}: fetch origin: fast-forward 
9763bbc refs/remotes/origin/[email protected]{3}: fetch origin: fast-forward 
058d0d6 refs/remotes/origin/[email protected]{4}: fetch origin: fast-forward 
921f0f1 refs/remotes/origin/[email protected]{5}: fetch origin: fast-forward 
8483afd refs/remotes/origin/[email protected]{6}: update by push 
18d527f refs/remotes/origin/[email protected]{7}: update by push 
1a0fc4a refs/remotes/origin/[email protected]{8}: fetch origin: fast-forward 
b19afc6 refs/remotes/origin/[email protected]{9}: fetch origin: fast-forward 
9253285 refs/remotes/origin/[email protected]{10}: fetch origin: fast-forward 
dfa664f refs/remotes/origin/[email protected]{11}: fetch origin: fast-forward 
30ee7c0 refs/remotes/origin/[email protected]{12}: update by push 
ad11e76 refs/remotes/origin/[email protected]{13}: fetch origin: fast-forward 
c337975 refs/remotes/origin/[email protected]{14}: update by push 
1ff03bd refs/remotes/origin/[email protected]{15}: update by push 
7fb1c8d refs/remotes/origin/[email protected]{16}: fetch origin: fast-forward 
452c8fa refs/remotes/origin/[email protected]{17}: fetch origin: fast-forward 
6c79a16 refs/remotes/origin/[email protected]{18}: update by push 
11d9c4a refs/remotes/origin/[email protected]{19}: fetch origin: fast-forward 

na przykład, mogę powiedzieć, że mój najnowszy push został zaktualizowany origin/master z 18d527f do 8483afd.

Jeśli chcesz na tym polegać, musisz zatrzymać reflog przed upływem domyślnego czasu (90 dni IIRC).

+0

Idealnie! Dziękuję Ci. FWIW, mój reflog pokazuje wpisy z ostatnich 9 miesięcy i nie zrobiłem nic, co wpłynęłoby na jego zachowanie od czasu pierwszej instalacji. – Clayton

+2

@Clayton: To prawdopodobnie oznacza, że ​​jeszcze nie uruchomiłeś wyzwalacza 'gc --auto'; to wygaśnie reflogi starsze niż domyślne 90 dni. Po prostu ustaw 'gc.reflogExpire' na' never' (lub coś większego), jeśli chcesz, aby tak pozostało. – Cascabel

+0

Dla uczących się git: aby ustawić reflog, aby nigdy nie wygasał dla wszystkich lokalnych repozytoriów: 'git config --global gc.reflogExpire never' w linii poleceń. –

Powiązane problemy