Git Commit: klasa mistrzowska

Opublikowany: 2023-02-26
Laptop na niebieskim tle z wierszem polecenia systemu Linux.
fatmawati achmad zaenuri/Shutterstock.com
Polecenie Git commit przechowuje kopie zmian z katalogu roboczego w repozytorium Git. Ale można go również użyć do zmiany istniejących zatwierdzeń i cofnięcia zatwierdzeń.

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ć.

Spis treści

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" 

Ustawianie globalnej nazwy użytkownika Git

Aby sprawdzić, czy nazwa została ustawiona, użyj tego polecenia.

 git config --global user.name 

Sprawdzanie globalnej nazwy użytkownika Git

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 

Ustawianie nazwy użytkownika Git specyficznej dla repozytorium

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 

Ustawianie globalnych i specyficznych dla repozytorium domyślnych adresów e-mail użytkowników Git

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” 

Inscenizacja i zatwierdzanie pojedynczego pliku

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 

Sprawdzanie dziennika repozytorium Git

Zatwierdzenia są wyświetlane w less .

Najnowsze zatwierdzenie na górze dziennika Git

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 

Używanie opcji --dry-run do podglądu plików, które będą umieszczane i usuwane

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” 

Zatwierdzanie zmienionych i nowo tworzonych plików, po użyciu opcji add -A

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 

Korzystanie z opcji zatwierdzenia -a podgląd zmian bez ich wykonywania

Teraz wykonajmy polecenie.

 git commit -a --dry-run 

Korzystanie z zatwierdzenia - opcja przygotowania i zatwierdzenia w jednym kroku

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 

Ukrywanie zmian, sprawdzanie gałęzi i stosowanie zmian ze skrytki

Możemy teraz wykonać commit i zaktualizować tę gałąź.

 git commit -a -m "Dodano funkcje wstępnego parsera" 

Zatwierdzenie zmian pobranych ze skrytki

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 

Sprawdzanie stanu gałęzi, aby upewnić się, że jest aktualna

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ć.

Dziennik Git z wyróżnionym typem

Aby to poprawić, użyjemy opcji --amend w ten sposób.

 git commit --amend -m "Zoptymalizowana identyfikacja fraz" 

Użycie opcji commit --amend w celu poprawienia komunikatu zatwierdzenia

Jeśli ponownie użyjemy git log , zobaczymy, że stare zatwierdzenie zostało zastąpione nowym z poprawionym komunikatem zatwierdzenia.

Dziennik Git przedstawiający poprawiony komunikat o zatwierdzeniu

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 

Zatwierdzenie pliku do poprzedniego zatwierdzenia

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~ 

Wysyłanie ostatniego zatwierdzenia z powrotem do obszaru przejściowego

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 

Usuwanie pliku z obszaru przemieszczania Git

Musimy zatwierdzić inne pliki, które pozostały w indeksie.

 git commit -m „Eksperymentalne poprawki” 

Zatwierdzanie plików, które pozostają w obszarze przejściowym

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 :

Dziennik Git z wyróżnionym identyfikatorem zatwierdzenia

Skopiuj to odniesienie i użyj go w poleceniu revert :

 git revert e5bd4560aef8164c6ca9d6d4620b9db7f66aecc8 

Cofanie zatwierdzenia identyfikowanego przez jego identyfikator zatwierdzenia

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ń.

Edytowanie wiadomości przywracania z podświetloną wiadomością domyślną

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”.

Ukończona akcja cofania, cofanie całego zatwierdzenia

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