Często mi się to zdarza:
Pracuję nad kilkoma powiązanymi zmianami jednocześnie w ciągu jednego lub dwóch dni, a kiedy nadszedł czas na zatwierdzenie, w końcu zapominam o zmianach w określonym pliku. (To tylko osobiste repozytorium git, więc nie mam nic przeciwko, aby mieć więcej niż jedną aktualizację w zatwierdzeniu.)
Czy jest jakiś sposób, aby wyświetlić podgląd zmian między moim plikiem lokalnym, który ma zostać zaewidencjonowany, a ostatnim zatwierdzeniem dla tego pliku?
Coś jak:
git diff --changed /myfile.txt
I wydrukuje coś takiego:
line 23
(last commit): var = 2+2
(current): var = myfunction() + 2
line 149
(last commit): return var
(current): return var / 7
W ten sposób mogłem szybko zobaczyć, co zrobiłem w tym pliku od ostatniego wpisu.
git add -p
. Przejrzyj każdą zmianę, wybiórczo zatwierdzaj zmiany na scenie, przerwij w dowolnym momencie, jeśli zmienisz zdanie, a nawet edytuj fragment. Nigdygit add
bez tego nie mam .q
git config --global diff.noprefix true
.pokaże ci zmiany dodane do twojego stołu roboczego od ostatniego zatwierdzenia. Wszystkie zmiany (etapowe lub nie etapowe) zostaną wyświetlone.
źródło
Aby sprawdzić lokalne różnice:
lub możesz użyć narzędzia różnicowego (na wypadek, gdybyś chciał cofnąć niektóre zmiany):
Aby
git difftool
efektywniej korzystać, zainstaluj i użyj swojego ulubionego narzędzia GUI, takiego jak Meld, DiffMerge lub OpenDiff.Uwaga: Możesz także użyć
.
(zamiast nazwy pliku), aby zobaczyć bieżące zmiany katalogu.Aby sprawdzić zmiany w każdej linii, użyj
git blame
:, która wyświetli, która linia została zatwierdzona w którym zatwierdzeniu.Aby wyświetlić rzeczywisty plik przed zatwierdzeniem (gdzie
master
jest twoja gałąź), uruchom:źródło
Czy próbowałeś
-v
(lub--verbose
) opcjigit commit
? Dodaje różnicę zatwierdzenia w edytorze wiadomości.źródło
Changes not staged for commit:
który może uczynić edytor zatwierdzeń bardziej czystym.Inna technika do rozważenia, jeśli chcesz porównać plik z ostatnim zatwierdzeniem, co jest bardziej pedantyczne:
Zaletą tej techniki jest to, że można również porównać do przedostatniego zatwierdzenia z:
a poprzedni:
Możesz także zastąpić „~” znakiem karetki „^”, a „you branch name” zamiast „master”, jeśli nie jesteś w gałęzi master.
źródło
Myślę, że jest to idealny przypadek użycia gwarantujący GUI. - Chociaż całkowicie rozumiem, że można to również osiągnąć wystarczająco dobrze w linii poleceń.
Osobiście, każde moje popełnienie, robię z git-gui. W którym mogę wykonać wiele atomowych zatwierdzeń z osobnymi porcjami / liniami, jeśli ma to sens.
Gut Gui umożliwia oglądanie różnic w dobrze sformatowanym kolorowym interfejsie, jest raczej lekki. Wygląda na to, że powinieneś również to zrobić.
źródło
git bisect
, które nie są tak naprawdę dostępne.tig
„interfejs tekstowy dla Gita”.W systemie macOS przejdź do katalogu głównego git i wpisz
git diff *
źródło
Najlepszym sposobem, jaki znalazłem, oprócz używania dedykowanego interfejsu GUI zatwierdzania, jest użycie
git difftool -d
- Otwiera to twoje narzędzie różnicowania w trybie porównywania katalogów, porównując HEAD z bieżącym brudnym folderem.źródło
Pokazuje porównanie za pomocą okna szczelinowego VI w terminalu.
źródło