Sprawdziłem kod źródłowy w GIT za pomocą komunikatu zatwierdzenia „Kompilacja 0051”.
Wydaje mi się jednak, że nie mogę już znaleźć tego kodu źródłowego - jak wyodrębnić to źródło z repozytorium GIT przy użyciu wiersza polecenia?
Aktualizacja
- Sprawdzone w wersjach 0043, 0044, 0045 i 0046 za pomocą SmartGIT.
- Sprawdzono 0043 i sprawdzono w wersjach do 0051 w innym oddziale.
- Sprawdziłem ponownie 0043.
- Teraz 0051 zniknął.
Aktualizacja
Na pewno jest kod źródłowy, teraz należy go sprawdzić:
C:\Source>git log -g --grep="0052"
commit 77b1f718d19e5cf46e2fab8405a9a0859c9c2889
Reflog: HEAD@{10} (unknown <Mike@.(none)>)
Reflog message: commit: 20110819 - 1724 - GL: Intermediate version. File version: v0.5.0 build 0052.
Author: unknown <Mike@.(none)>
Date: Fri Aug 19 17:24:51 2011 +0100
20110819 - 1724 - GL: Intermediate version. File version: v0.5.0 build 0052.
C:\Source>
Odpowiedzi:
Aby przeszukać dziennik zatwierdzeń (we wszystkich gałęziach) dla podanego tekstu:
Aby przeszukać rzeczywistą treść zatwierdzeń w historii repozytorium, użyj:
aby wyświetlić wszystkie wystąpienia danego tekstu, zawierającą nazwę pliku i zatwierdzenie sha1.
Wreszcie, w ostateczności, jeśli twoje zatwierdzenie jest wiszące i w ogóle nie ma związku z historią, możesz przeszukać sam dziennik refraktu za pomocą
-g
flagi (skrót od--walk-reflogs
:EDYCJA: jeśli wydaje się, że straciłeś historię, sprawdź
reflog
jako swoją siatkę bezpieczeństwa. Poszukaj kompilacji 0051 w jednym z zatwierdzeń wymienionych przezByć może po prostu ustawiłeś swoją
HEAD
na część historii, w której zatwierdzenie „Kompilacja 0051” nie jest widoczne, lub mogło być faktycznie wysadzone w powietrze. Git-ready reflog artykuł może być pomocne.Aby odzyskać swoje zatwierdzenie z rejestru : wykonaj polecenie git znalezionego zatwierdzenia (i opcjonalnie utwórz nowy oddział lub znacznik dla odniesienia)
źródło
git grep 'search' $(git rev-list --all)
, spróbujgit rev-list --all | xargs git grep 'search'
Umieszczam to w moim ~ / .gitconfig:
Następnie mogę wpisać „git find string” i otrzymam listę wszystkich zatwierdzeń zawierających ten ciąg w wiadomości. Na przykład, aby znaleźć wszystkie zatwierdzenia dotyczące biletu nr 33:
źródło
--pretty=\"format:%Cgreen%H %Cblue%s%Creset\"
find = log --all --pretty=\"format:%Cgreen%H %Cblue%s\n%b%Creset\" --name-status --grep
. Uwaga znaki--all
i%b
. Dzięki za @ShleyCoolman zareset
wskazówkę.find = log --oneline --name-status -i --grep
Chociaż jest nieco spóźniony, istnieje
:/
dedykowana notacja do określenia zatwierdzenia (lub zmiany) na podstawie komunikatu zatwierdzenia, wystarczy poprzedzić szukany ciąg:/
, np .:Tutaj
<message>
może być złożony wzór regex składający się z białych znaków, więc upewnij się, żeby zacytować / ucieczki, gdy jest to konieczne, na przykład:Alternatywnie można określić punkt początkowy, aby znaleźć najbliższe zatwierdzenie osiągalne z określonego punktu, np .:
Zobacz: instrukcja wersji git .
źródło
źródło
powinien załatwić sprawę
źródło
Spróbuj tego!
źródło
git grep
zamiast normalnego grep i podać--all
flagę do przeszukiwania wielu gałęzi.git log --all --grep='Build 0051'
(odpowiedź @ shelhamera)git log -g
. Być może straciłeś historię podczas resetowania, ale nadal możesz sprawdzić dziennik, jeśli nie został on wyrzucony.najpierw użyj,
git log --oneline
aby znaleźć SHA zatwierdzenia (Wiadomość), a następnie użyłemgit log --stat 8zad24d
z SHA (przykład pierwszej pary sha char (8zad24d)), aby znaleźć właściwe informacjeźródło
To:
albo to:
polecenia działają dla mnie najlepiej.
źródło
Aby przeszukać wszystkie gałęzie
Kiedy już wiesz, do którego zatwierdzenia chcesz się dostać
źródło
Jeśli zmiana nie jest zbyt stara, możesz to zrobić,
git reflog
a następnie sprawdź identyfikator zatwierdzenia
źródło