Git Commit: klasa mistrzowska
Opublikowany: 2023-02-26 Podstawowym wymaganiem każdego systemu kontroli wersji jest przechowywanie różnych wersji plików. W Git poleceniem, które to robi, jest commit
. Oto wszystko, co musisz wiedzieć.
Co to jest zatwierdzenie w Git?
Konfigurowanie polecenia zatwierdzenia
Korzystanie z polecenia zatwierdzenia
Podstawowe zobowiązanie
Automatyczne umieszczanie plików
Inscenizacja i zaangażowanie w tym samym czasie
Zobowiązując się do innego oddziału
Dokonywanie zmian w zobowiązaniach
Usuwanie zmian z zatwierdzenia
Cofanie całego zatwierdzenia
Szwajcarski scyzoryk Git
Co to jest zatwierdzenie w Git?
Zatwierdzenia to serie migawek wykonanych w całym cyklu życia projektu, które składają się na jego historię rozwoju. Zatwierdzenia pozwalają nam wyodrębnić wersję projektu taką, jaka była w różnych momentach w przeszłości. Dlaczego to jest ważne?
Systemy kontroli wersji (VCS) są najczęściej używane z kodem źródłowym oprogramowania i projektami programistycznymi. Ale można ich z powodzeniem używać z dowolnym zbiorem plików tekstowych, takim jak pliki Markdown zawierające rozdziały książki.
Możesz nie chcieć, aby każdy plik w katalogach twojego projektu był obsługiwany przez VCS, więc musisz mieć możliwość nominowania plików, które mają być kontrolowane pod kątem wersji. Spowoduje to dodanie ich do widoku kontroli wersji projektu. Będą monitorowane pod kątem zmian.
Innym sposobem na osiągnięcie tego jest użycie listy ignorowanych. To mówi Gitowi, które pliki, katalogi lub typy plików powinien zawsze ignorować.
Z biegiem czasu, w miarę dodawania nowych plików do projektu, niektóre będą wymagały dodania do systemu kontroli wersji. W Git jest to obsługiwane przez polecenie add
. W rzeczywistości polecenie add
wykonuje podwójną usługę, jak zobaczymy.
Aby zachować historię zmian wprowadzonych w projekcie, będziesz okresowo prosił Gita o przechowywanie migawki stanu projektu za pomocą polecenia commit
. W tym miejscu ponownie pojawia się polecenie add
w naszym przepływie pracy. Używamy polecenia add
, aby powiedzieć Gitowi, które zmienione pliki chcemy uwzględnić w migawce. Następnie używamy commit
, aby powiedzieć Gitowi, aby utworzył migawkę.
Konfigurowanie polecenia zatwierdzenia
Informacje o zatwierdzeniu są przechowywane razem z nim, dzięki czemu zawsze można wiedzieć, kto dokonał zatwierdzenia, kiedy i co zawiera zatwierdzenie. Niektóre z tych metadanych są przechwytywane w czasie zatwierdzenia, na przykład komunikat zatwierdzenia.
Metadane dotyczące tożsamości członków zespołu programistów mogą być konfigurowane przez każdego użytkownika, aby zapobiec wielokrotnemu podawaniu tych samych informacji.
Aby ustawić swoją nazwę globalnie dla wszystkich repozytoriów na komputerze, użyj tego polecenia.
git config --global user.name "Dave McKay"
Aby sprawdzić, czy nazwa została ustawiona, użyj tego polecenia.
git config --global user.name
Jeśli potrzebujesz użyć innej nazwy w konkretnym repozytorium, przejdź do katalogu projektu i użyj tego samego polecenia bez opcji --global
.
git config user.name "McKay, David"
git config nazwa.użytkownika
Mamy teraz inną domyślną nazwę użytkownika dla tego repozytorium, a nasza nazwa globalna jest nadal używana w innych repozytoriach.
W podobny sposób możemy ustawić adres e-mail globalnie lub dla pojedynczego repozytorium, włączając lub pomijając opcję --global
.
git config user.email "[email protected]"
git config --global user.email "dave@fałszywa-domena.com"
git config user.email
git config --global user.email
Te ustawienia są przechowywane w plikach konfiguracyjnych. Globalne ustawienia Git są przechowywane w „~/.gitconfig”, a ustawienia specyficzne dla repozytorium są przechowywane w pliku „.git/config” repozytorium.
Polecenie commit
odwołuje się do tych wartości i używa ich podczas działania.
Korzystanie z polecenia zatwierdzenia
Podstawowym zastosowaniem polecenia commit
jest pobranie plików znajdujących się w obszarze przemieszczania, znanym jako indeks, i zapisanie ich jako zatwierdzenie w bieżącej gałęzi repozytorium.
Podstawowe zobowiązanie
Mamy projekt ze zmienionym plikiem. Użyjemy polecenia add
do przygotowania pliku, a następnie zatwierdzimy go. Używamy opcji -m
(komunikat zatwierdzenia), abyśmy mogli podać krótki opis celu zmian. Jeśli nie użyjemy tej opcji, zostaniemy poproszeni o przesłanie komunikatu o zatwierdzeniu w trakcie zatwierdzenia. Wygodniej jest dodać go w wierszu poleceń.
git add jibber.c
git commit -m „Zaktualizowany tekst pomocy”
Jeśli użyjemy polecenia git log
możemy przejrzeć szczegóły zatwierdzeń w porządku chronologicznym, z najnowszym zatwierdzeniem na górze listy.
dziennik git
Zatwierdzenia są wyświetlane w less
.
Zatwierdzenie zostało oznaczone imieniem i nazwiskiem oraz adresem e-mail, które podaliśmy wcześniej, a nasza wiadomość o zatwierdzeniu również jest rejestrowana.
Automatyczne umieszczanie plików
Przygotowanie wielu plików może zająć trochę czasu. Innym podejściem jest użycie opcji -A
(all) z add
.
Spowoduje to automatyczne umieszczenie wszystkich zmodyfikowanych plików wraz ze wszystkimi aktualnie nieśledzonymi plikami. Przemieszczanie nieśledzonych plików jest zgodne z ustawieniami w pliku „.gitignore”. Git nie będzie umieszczał plików, o których powiedziałeś, że nie chcesz ich uwzględniać. Wreszcie pliki w indeksie, które nie znajdują się już w katalogu roboczym, są usuwane z indeksu.
Najwyraźniej opcja -A
może spowodować, że wiele się wydarzy jednocześnie. Opcja --dry-run
daje podgląd zmian bez faktycznego ich wykonywania.
git add -A --dry-run
W naszym przykładzie wstawi dwa zmodyfikowane istniejące pliki i dwa nowe pliki. Przejdźmy dalej i użyjmy opcji -A
przed użyciem polecenia commit
.
git dodaj -A
git commit -m „Rozszerzone parsowanie”
Widzimy, że zmieniono łącznie cztery pliki. Dwa z nich to nowo utworzone pliki, które są wymienione.
Inscenizacja i zaangażowanie w tym samym czasie
Komenda commit
ma opcję -a
(all) małymi literami. Wykonuje to przemieszczanie i zatwierdzanie plików w jednym kroku.
Opcja commit -a
etapuje i zatwierdza zmodyfikowane istniejące pliki oraz usuwa pliki z indeksu, jeśli zostały usunięte z katalogu roboczego. Nie umieszcza automatycznie nieśledzonych plików.
Podobnie jak polecenie add
, polecenie commit ma opcję --dry-run
, która umożliwia podgląd jego działań przed wykonaniem.
git commit -a --dry-run
Teraz wykonajmy polecenie.
git commit -a --dry-run
Pliki są dla nas wystawiane i zatwierdzane.
Zobowiązując się do innego oddziału
Jeśli dokonałeś pewnych zmian w plikach w katalogu roboczym, a potem zdałeś sobie sprawę, że nie wyewidencjonowałeś właściwej gałęzi, musisz zatwierdzić zmiany we właściwej gałęzi bez wpływu na bieżącą gałąź.
Git nie ma polecenia zatwierdzania do innej gałęzi. Ale możesz naprawić tę sytuację przy odrobinie zręczności Gita.
Użyjemy polecenia Git stash
, aby utworzyć kopię zmian. Następnie sprawdzimy właściwą gałąź i zastosujemy zmiany ze schowka. Aby zastosować ukryte zmiany, używamy polecenia pop
zamiast polecenia apply
. Polecenie pop
stosuje zmiany, a także usuwa je ze skrytki.
Wprowadziliśmy pewne zmiany w gałęzi new-parser
w naszym repozytorium. Powinny być wykonane w gałęzi classic-parser
.
zapas git
git checkout klasyczny parser
git stash pop
Możemy teraz wykonać commit
i zaktualizować tę gałąź.
git commit -a -m "Dodano funkcje wstępnego parsera"
Jeśli wrócimy do gałęzi new-parser
zobaczymy, że jest ona aktualna, co oznacza, że zmiany zostały usunięte z katalogu roboczego, a repozytorium i pliki są zsynchronizowane.
git checkout nowy parser
status gita
POWIĄZANE: Jak aktualizować i utrzymywać oddzielne gałęzie Git
Dokonywanie zmian w zobowiązaniach
Jeśli chcesz poprawić komunikat dotyczący zatwierdzenia — być może zauważyłeś w nim literówkę — lub zapomniałeś umieścić plik, który powinien był zostać uwzględniony w zatwierdzeniu, możesz użyć opcji --amend
, aby poprawić sytuację. Zastrzeżenie jest takie, że nie powinno to być używane w przypadku zatwierdzeń, które zostały wypchnięte do zdalnego repozytorium.
W naszej ostatniej wiadomości zatwierdzenia „fraze” powinno być „phrase”. Jeśli użyjemy git log
możemy to zobaczyć.
Aby to poprawić, użyjemy opcji --amend
w ten sposób.
git commit --amend -m "Zoptymalizowana identyfikacja fraz"
Jeśli ponownie użyjemy git log
, zobaczymy, że stare zatwierdzenie zostało zastąpione nowym z poprawionym komunikatem zatwierdzenia.
Jeśli chcemy dodać plik, o którym zapomnieliśmy umieścić, możemy zatwierdzić ten plik, aby pojawił się jako część poprzedniego zatwierdzenia.
Użyjemy add
do przygotowania pliku, a następnie dokonamy zatwierdzenia z opcją --amend
. Opcja --no-edit
oznacza, że nie musimy podawać nowej wiadomości zatwierdzenia. Poprzedni komunikat zatwierdzenia zostaje zachowany.
git add jibber.c
git commit --amend --no-edit
Usuwanie zmian z zatwierdzenia
Jeśli przypadkowo umieściłeś i zatwierdziłeś plik, którego nie zamierzałeś, możesz usunąć ten plik z zatwierdzenia za pomocą polecenia reset
. Zresetujemy zatwierdzenie z powrotem do obszaru przemieszczania lub indeksu. Następnie usuniemy plik i ponownie zatwierdzimy pozostałe pliki.
Aby zresetować ostatnie zatwierdzenie do obszaru przemieszczania, używamy polecenia reset --soft
. HEAD~
jest skrótem oznaczającym „zatwierdzenie za HEAD osi czasu zatwierdzenia projektu” lub w języku angielskim „ostatnie zatwierdzenie”.
git reset --soft HEAD~
Aby usunąć plik, który nie powinien był zostać dołączony, używamy polecenia reset --mixed
. Spowoduje to zresetowanie tych zmian z powrotem do katalogu roboczego, a zmodyfikowany plik zostanie odtworzony jako nieetapowy, niezatwierdzony plik.
git reset --mixed jibber.c
Musimy zatwierdzić inne pliki, które pozostały w indeksie.
git commit -m „Eksperymentalne poprawki”
Pozostałe dwa pliki, które były w pierwotnym zatwierdzeniu, są dla nas ponownie zatwierdzane.
POWIĄZANE: Jak naprawić, edytować lub cofnąć zatwierdzenia Git (zmiana historii Git)
Cofanie całego zatwierdzenia
Czasami cofnięcie całego zatwierdzenia jest najłatwiejszą rzeczą do zrobienia. Przywraca twój katalog roboczy i repozytorium do stanu, w jakim znajdowały się przed zatwierdzeniem.
Musimy użyć zaszyfrowanego identyfikatora referencyjnego zatwierdzenia. Możemy to znaleźć za pomocą git log
:
Skopiuj to odniesienie i użyj go w poleceniu revert
:
git revert e5bd4560aef8164c6ca9d6d4620b9db7f66aecc8
Spowoduje to otwarcie domyślnego edytora, dzięki czemu będziesz mógł edytować wiadomość przywracania. Wprowadzono domyślną wiadomość dla Ciebie. Możesz użyć tego lub edytować według własnych upodobań.
Gdy jesteś zadowolony z wiadomości o przywróceniu, zapisz plik i zamknij edytor. W nano robisz to za pomocą „Ctrl + O” i „Ctrl + X”.
Używając ponownie git log
, możemy zobaczyć, że dodano nowe zatwierdzenie, które cofa zmiany w cofniętym zatwierdzeniu.
Szwajcarski scyzoryk Git
Oczywiście commit
to jedno z najważniejszych poleceń Gita. Może wiele zrobić, więc jest wiele do nauczenia się. Zapoznanie się z jego rzadziej używanymi funkcjami to dobrze spędzony czas. Kiedy musisz poprawić błąd — właśnie teraz — będziesz zadowolony, że przygotowałeś się z wyprzedzeniem.
POWIĄZANE: Jak korzystać z łączenia Git