Czasami sprawdzam niektóre poprzednie wersje kodu do sprawdzenia lub przetestowania. Widziałem instrukcje, co zrobić, jeśli chcę zmodyfikować poprzednie zatwierdzenia - ale przypuszczam, że nie wprowadzam żadnych zmian. Po zakończeniu np. git checkout HEAD^
Jak wrócić do końca gałęzi? ..git log
nie pokazuje mi już SHA ostatniego zatwierdzenia.
git
version-control
Lew Aleksiejjew
źródło
źródło
git log
zdanie twojego pytania, zawsze możesz biegaćgit log --all
(lub bardziej pożyteczniegit log --oneline --graph --all
).Odpowiedzi:
Jeśli wiesz, że zatwierdzenie, do którego chcesz powrócić, jest głową jakiegoś oddziału lub jest otagowane, możesz po prostu
Możesz także użyć,
git reflog
aby zobaczyć, na co inne zobowiązania wskazane przez HEAD (lub inne referencje) wskazywały w przeszłości.Edytowano, aby dodać:
W nowszych wersjach Git, jeśli tylko pobiegłeś
git checkout
lub coś innego, aby przenieśćHEAD
raz, możesz to zrobićaby wrócić do miejsca, w którym znajdowało się przed ostatnią kasą. Było to motywowane przez analogię do idiomu powłoki,
cd -
aby wrócić do dowolnego katalogu roboczego, w którym wcześniej był.źródło
master
tak naprawdę nie jest słowem kluczowymHEAD
. Jest to tylko domyślna nazwa oddziału w nowym repozytorium. Możesz uruchomić,git branch
aby uzyskać listę oddziałów w repozytorium igit tag -l
listę tagów. Podobnieorigin
jest domyślną nazwą pilota, z którego klonowane jest repozytorium, ale nie ma w tym nic specjalnego.git reflog
podaje listę skrótów, w którym momencie możesz użyćgit checkout [commit-hash]
.Git Checkout Master
master jest wskazówką lub ostatnim zatwierdzeniem. gitk pokaże ci tylko to, gdzie jesteś na drzewie w tym czasie. git reflog pokaże wszystkie zatwierdzenia, ale w tym przypadku chcesz tylko wskazówkę, więc git checkout master.
źródło
git checkout branchname
Natrafiłem na to pytanie już teraz i mam coś do dodania
Aby przejść do ostatniego zatwierdzenia:
Wyjaśnienie:
git log --branches
pokazuje dziennik zatwierdzeń ze wszystkich lokalnych oddziałów-1
limit do jednego zatwierdzenia → najnowszy--pretty=format:"%H"
format zatwierdzenia , aby pokazać tylko hash zatwierdzenia,git checkout $(...)
użyj danych wyjściowych podpowłoki jako argumentu do kasyUwaga:
Spowoduje to jednak odłączenie głowy (ponieważ kasujemy bezpośrednio do zatwierdzenia). Można tego uniknąć, wyodrębniając nazwę gałęzi za pomocą
sed
, wyjaśnionego poniżej.Aby przejść do gałęzi ostatniego zatwierdzenia:
Wyjaśnienie:
git log --branches
pokazuje dziennik zatwierdzeń ze wszystkich lokalnych oddziałów-1
ograniczenie do jednego zatwierdzenia → najnowszy--pretty=format:"%D"
format zatwierdzenia , aby pokazać tylko nazwy referencji| sed 's/.*, //g'
ignoruj wszystkie oprócz ostatniego z wielu referencji (*)git checkout $(...)
użyj danych wyjściowych podpowłoki jako argumentu do kasy*) HEAD i gałęzie zdalne są wymienione jako pierwsze, gałęzie lokalne są wymienione jako ostatnie w kolejności malejącej alfabetycznie, więc pozostała będzie alfabetycznie nazwa pierwszego oddziału
Uwaga:
To zawsze użyje (alfabetycznie) pierwszej gałęzi tylko wtedy, gdy istnieje wiele dla tego zatwierdzenia.
W każdym razie, myślę, że najlepszym rozwiązaniem byłoby wyświetlenie nazw referencji dla ostatniego zatwierdzenia, aby wiedzieć, gdzie sprawdzić:
Np. Utwórz alias
git top
dla tego polecenia.źródło
alias git-head='git checkout $(git log --branches -1 --pretty=format:"%D" | sed "s/.*, //g")'
Spójrz na graficzny GUI ...
gitk
pokazuje wszystkie zatwierdzenia. Czasami łatwiej jest pracować graficznie ... ^^źródło
W tym celu możesz użyć jednego z następujących poleceń git:
źródło
pokaż wszystkie gałęzie i zatwierdź
git log - gałęzie --oneline
pokaż ostatnie zatwierdzenie
git log - gałęzie -1 --online
pokaż przed ostatnim zatwierdzeniem
git log - rozgałęzienia -2 --online
źródło
źródło
Jeśli masz gałąź inną niż master, jednym z łatwych sposobów jest sprawdzenie tej gałęzi, a następnie sprawdzenie master. Voila, wróciłeś na szczyt mistrza. Prawdopodobnie istnieją mądrzejsze sposoby ...
źródło
Możesz po prostu zrobić
git pull origin branchname
. Spowoduje to ponowne pobranie ostatniego zatwierdzenia.źródło
Jeśli twoje ostatnie zatwierdzenie znajduje się w gałęzi master, możesz po prostu użyć
źródło