Historia lub dziennik poleceń wykonanych w Git


96

Czy istnieje sposób, aby śledzić polecenia używane w Git w systemie Windows? Chcę zobaczyć wszystkie polecenia, które zastosowałem w moim repozytorium.

Chcę móc wrócić do historii poleceń i znaleźć polecenie, które spowodowało problem, jeśli taki wystąpił.

Oglądanie historii zatwierdzeń to jedno, ale czy w przypadku przechowywania historii innych działań, takich jak tworzenie gałęzi lub dodawanie pilota, są one śledzone?


3
To trochę na marginesie, ale jeśli zajrzysz do środka, .git/logszobaczysz historię tego, na co wskazywała każda gałąź.
Nayuki,

1
@Nayuki Ponieważ pushing nie zmienia stanu lokalnego oddziału, reflognajwyraźniej nie przechowuje pushes, więc zaglądanie do niego .git/logs/refs/remotes/*/*jest jedynym sposobem, aby zobaczyć swoją pushhistorię.
Kyle Strand

Odpowiedzi:


-8

git pokaże zmiany w zatwierdzeniach, które wpływają na indeks, takie jak git rm. Nie przechowuje dziennika wszystkich wykonywanych poleceń git.

Jednak duża liczba poleceń git wpływa w jakiś sposób na indeks , na przykład tworzy nową gałąź. Te zmiany pojawią się w historii zatwierdzeń, którą możesz przeglądać git log.

Istnieją jednak destrukcyjne zmiany, których git nie może śledzić, takie jak git reset.

Tak więc, odpowiadając na twoje pytanie, git nie przechowuje absolutnej historii gitpoleceń, które wykonałeś w repozytorium. Jednak często można interpolować polecenie, które wykonałeś, korzystając z historii zmian.


3
W rzeczywistości, jak słusznie wspomniano w odpowiedzi poniżej, tak. „historia” pokazuje listę wykonanych poleceń (od momentu instalacji).
Umesh .A Bhat

2
Te powłoki przechowuje historię, ale git nie, prawda?
Alex

3
@UmeshABco git historybyłoby przydatne np. Do sprawdzenia, które polecenia zostały wykonane w określonym klonie .
Kyle Strand

5
git reflogjest tym, czego chcesz. Zobacz odpowiedź poniżej.
Chéyo

3
@ cp.engr: OP pyta o historię poleceń git, a nie zatwierdzeń git. Ta odpowiedź sugeruje wywodzenie poleceń z zatwierdzeń git, co jest bardzo ciężką pracą i nie zawsze jest możliwe. git reflogfaktycznie pokazuje same polecenia. Ponadto, przy okazji, powłoka jest tylko nieco bardziej bezpośrednim sposobem wnioskowania o poleceniach git, ale repozytorium git może być dotykane przez wiele powłok. Lepiej zapytać gita, jakie polecenia zostały użyte.
kombinatorka

184

Możesz zobaczyć historię za pomocą git-reflog ( przykład tutaj ):

git reflog

18
@PauAI podczas gdy git reflog pokaże wszystkie pozycje, które podążał twój HEAD, tak naprawdę nie pokaże wszystkich poleceń git. Polecenia Gita, które nie poruszają głową (na przykład git branch -D my_precious_branch), nie pojawią się tam.
Yonatan,

@Yonatan, nie możesz tego dostać git reflog --all?
kombinatorka

2
@combinatorist warto dodać pilota (jak na przykład PO dała) git remote add foo bar. nie pojawi się w git reflog --all, ponieważ nie modyfikuje wskaźnika HEAD.
Yonatan

git reflognie pokazuje poleceń takich jak git statusaso., z --allparametrem lub bez niego .
Lorenz

62

Dziennik twoich poleceń może być dostępny w historii powłoki.

history

Jeśli lista wykonywanych poleceń nie jest dla Ciebie, wyeksportuj ją do pliku.

history > path/to/file

Możesz ograniczyć eksportowany zrzut, aby pokazywał tylko polecenia zawierające „git”, przesyłając je potokiem za pomocą grep

history | grep "git " > path/to/file

Historia może zawierać linie tak sformatowane

518  git status -s
519  git commit -am "injects sriracha to all toppings, as required"

Za pomocą numeru możesz ponownie wykonać polecenie z wykrzyknikiem

$ !518
git status -s

8

Jeśli używasz CentOS lub innego systemu Linux, po prostu zrób Ctrl+ Rpo monicie i wpisz git.

Jeśli będziesz nadal naciskać Ctrl+, Rspowoduje to odwrotne przeszukanie historii w poszukiwaniu poleceń zaczynających się odgit


7

Wpisz historyswój terminal. To nie jest technicznie głupie, ale myślę, że tego chcesz.


6

Jeśli używasz programu Windows PowerShell, możesz wpisać „git” i nacisnąć klawisz F8. Kontynuuj naciskanie F8, aby przechodzić przez wszystkie polecenia git.

Lub, jeśli używasz cygwin, możesz zrobić to samo z ^ R.


W normalnej sesji systemu Windows możesz użyć klawisza F7, aby uzyskać małe okno, które zawiera listę wszystkich poleceń wprowadzonych w tej sesji
milso

0

Dowiedziałem się, że w mojej wersji git bash „2.24.0.windows.2” w moim folderze „domowym” pod użytkownikami systemu Windows będzie plik o nazwie „.bash-history” bez rozszerzenia pliku w tym folderze. Jest tworzony dopiero po wyjściu z basha.

Oto mój przepływ pracy:

  1. przed wyjściem z basha wpisz „history >> history.txt” [ENTER]
  2. wyjdź z zachęty basha
  3. przytrzymaj Win + R, aby otworzyć okno poleceń Uruchom
  4. wpisz powłoka: profil
  5. otwórz „history.txt”, aby potwierdzić, że mój tekst został dodany
  6. W nowym wierszu naciśnij klawisz [F5], aby wprowadzić znacznik czasu
  7. zapisz i zamknij plik tekstowy historii
  8. Usuń plik „.bash-history”, aby następna sesja utworzyła nową historię

Jeśli naprawdę potrzebujesz punktów, myślę, że możesz zrobić plik wsadowy, aby to wszystko zrobić, ale to mi wystarczy. Mam nadzieję, że to komuś pomoże.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.