Po ściągnięciu przez Git jego dane wyjściowe zawierają podsumowanie wielkości zmiany.
Jak mogę zobaczyć szczegółowe zmiany w każdym lub niektórych plikach?
OK, oto moje pytanie do Jefromiego:
Skąd mam wiedzieć, czy ciągnąłem do mistrzostwa? Wszystko, co zrobiłem, to „git pull”.
Na co wskazuje master i jaka jest różnica między master i HEAD, dwoma domyślnymi głowicami Gita?
Jak wyświetlić szczegółową zmianę w określonym pliku?
Jak ponownie zobaczyć zmianę w podsumowaniu wyników przez ostatnie
git pull
?Jaka jest różnica między
git diff
igit whatchanged
?
git diff
wyraźnie wyświetla różnicę, podczas gdygit whatchanged
wyraźnie wyświetla listę informacji o zatwierdzeniu, z których każda zawiera listę plików zmienionych.Odpowiedzi:
Załóżmy, że ciągniesz do mistrzostwa. Możesz odwołać się do poprzedniej pozycji
master
bymaster@{1}
(lub nawetmaster@{10.minutes.ago}
; zobacz sekcję określającą wersje strony podręcznika git-rev-parse ), dzięki czemu możesz robić takie rzeczy jakZobacz wszystkie zmiany:
git diff master@{1} master
Zobacz zmiany w podanym pliku:
git diff master@{1} master <file>
Zobacz wszystkie zmiany w danym katalogu:
git diff master@{1} master <dir>
Zobacz podsumowanie zmian ponownie:
git diff --stat master@{1} master
Jeśli chodzi o twoje pytanie „skąd mam wiedzieć, czy jestem na master”… cóż, używanie gałęzi jest ważną częścią przepływu pracy Gita. Zawsze powinieneś być świadomy tego, na której gałęzi się znajdujesz - jeśli wyciągnąłeś zmiany, chcesz przeciągnąć je do właściwej gałęzi! Możesz zobaczyć listę wszystkich gałęzi, z gwiazdką przy aktualnie wyewidencjonowanym, za pomocą polecenia
git branch
. Bieżąca nazwa gałęzi jest również drukowana wraz z danymi wyjściowymigit status
. Bardzo polecam przejrzenie stron podręcznika man poleceń - to świetny sposób na powolne zdobywanie wiedzy.I ostatnie pytanie:
HEAD
to nazwa aktualnie wyewidencjonowanego oddziału. Rzeczywiście możesz użyćHEAD
iwHEAD@{1}
tym kontekście, ale użycie gałęzi jest nieco bardziej niezawodne, ponieważ jeśli pójdziesz i sprawdź inną gałąź.HEAD
jest teraz tą drugą gałęzią iHEAD@{1}
jest terazmaster
- nie tym, czego chcesz!Aby uniknąć konieczności zadawania wielu takich małych pytań, prawdopodobnie powinieneś rzucić okiem na samouczek Gita. W sieci jest milion, na przykład:
źródło
git diff master@{1} master
inaczej zmiana jest pokazana "wstecz", tj.git diff master@{1} master
nie pracował dla mnie, zamiast tegogit diff master~1 master
wykonał pracę za mnie.git reflog master
zrozumieć, co.fatal: ambiguous argument 'firstDesign@': unknown revision or path not in the working tree.
Ciągle otrzymuję ten błąd. Chociaż git reflog firstDesign ma ten wynik .Powiedz, że wykonujesz takie git pull:
Możesz zobaczyć różnicę tego, co się zmieniło, używając numerów wersji:
źródło
git diff --stat a407564..9f52bed
" lub po prostu podsumowanie "git diff --summary a407564..9f52bed
"Samo polecenie działa w ten sposób:
i domyślnie odnosi się do bieżącej gałęzi. Możesz sprawdzić swoje oddziały za pomocą
Spowoduje to wyświetlenie lokalnych i zdalnych oddziałów, takich jak np. (Dodano
---
jako dzielnik między lokalnym i zdalnym, aby było bardziej przejrzyste)Kiedy następnie spojrzysz na jedno zdalne repozytorium, zobaczysz, do czego się odnosisz:
wyświetli się następująco:
Dlatego łatwo jest mieć pewność, skąd wyciągnąć i pchać.
Najłatwiejszy i najbardziej elegancki sposób (imo) to:
W ten sposób uzyskasz dwa bloki informacji o zmianach między ostatnim pociągnięciem a bieżącym stanem pracy. Przykładowe dane wyjściowe (dodałem
---
jako dzielnik między--stat
i--dirstat
wyjście, aby było bardziej przejrzyste):źródło
Ten sposób jest trochę hakerski, ale pozwoli ci użyć narzędzi graficznych, takich jak
gitk
lubgitg
lubgit-gui
:Odpowiedź z największą liczbą głosów pozytywnych daje najlepszy sposób za pomocą narzędzia git, ale używam tej metody, ponieważ mogę następnie użyć narzędzi z GUI, aby zobaczyć zmiany: P
Miałbym wtedy dodatkowy krok, aby wykonać a,
git checkout .
a następnie zrobić togit pull
ponownie, aby poprawnie wyciągnąć i scalić, ale cenię sobie możliwość zbadania różnic w GUI na tyle, aby poradzić sobie z dodatkowymi dwoma krokami.źródło