Close

git add

W przypadku pracy w Git lub innych systemach kontroli wersji pojęcie „zapisywania” jest procesem bardziej złożonym niż zapisywanie w edytorze tekstu lub innych tradycyjnych aplikacjach do edycji plików. Tradycyjne pojęcie „zapisywania” używane w kontekście oprogramowania jest synonimem „zatwierdzania” w Git. Commit jest w Git odpowiednikiem „pliku zapisu”. Tradycyjne „zapisanie zmian” należy rozumieć jako operację na plikach, która służy do nadpisania istniejącego pliku lub utworzenia nowego. Natomiast commit w Git jest operacją, która działa na zbiorze plików i katalogów.

Zapisywanie zmian w Git i SVN to także odmienne procesy. Commity lub „zaewidencjonowania” SVN to operacje polegające na zdalnym wypchnięciu zmian na scentralizowany serwer. Aby możliwe było pełne „zapisanie” zmian w projekcie, commit SVN wymaga zatem dostępu do internetu. Z kolei commity Git można przechwytywać i rozbudowywać lokalnie, a następnie w razie potrzeby wypychać na zdalny serwer za pomocą polecenia git push -u origin main. Rozbieżności między tymi dwiema metodami stanowią fundamentalną różnicę między modelami architektury. Git ma postać aplikacji rozproszonej, a SVN to model scentralizowany. Ogólnie aplikacje rozproszone są bardziej niezawodne, ponieważ nie występują w nich pojedyncze punkty podatności na awarię jak w przypadku serwera scentralizowanego.

Polecenia git add, git status i git commit są używane wspólnie do zapisu migawki bieżącego stanu projektu Git.

System Git dysponuje dodatkowym mechanizmem zapisu, zwanym schowkiem. To miejsce krótkotrwałego przechowywania zmian niegotowych do zatwierdzenia. Schowek działa na katalogu roboczym, pierwszym z trzech drzew Git, i oferuje szeroki zakres zastosowań. Aby dowiedzieć się więcej, odwiedź stronę poświęconą schowkowi Git.

Repozytorium Git można skonfigurować tak, aby ignorowało określone pliki lub katalogi. Dzięki temu system nie będzie zapisywał zmian w ignorowanej treści. Git oferuje wiele metod konfiguracji zarządzania listą elementów ignorowanych. Konfigurację ignorowania szczegółowo omówiono na stronie poświęconej funkcji git ignore.


git add


Polecenie git add dodaje zmianę z katalogu roboczego do przechowalni. Informuje system, że chcesz włączyć aktualizacje pliku do następnego commita. git add nie wpływa jednak w żaden istotny sposób na repozytorium — zmiany nie są faktycznie rejestrowane, dopóki nie zostanie wykonane polecenie git commit.

W połączeniu z tymi poleceniami potrzebne jest również git status do wyświetlenia stanu katalogu roboczego i przechowalni.

Jak to działa


Polecenia git add i git commit składają się na podstawowy przepływ pracy Git. To dwa polecenia, które musi znać każdy użytkownik Git, niezależnie od modelu współpracy w zespole. Służą do zapisywania wersji projektu w historii repozytorium.

Rozwój projektu następuje według podstawowego schematu edycja / zapis w przechowalni / zatwierdzenie. Najpierw odbywa się edycja plików w katalogu roboczym. Gdy aktualny stan projektu będzie się nadawał do utrwalenia, zmiany zapisuje się w przechowalni za pomocą polecenia git add. Jeśli zapisana migawka spełnia oczekiwania, zatwierdza się ją w historii projektu za pomocą polecenia git commit. Do cofania commitów lub migawek z przechowalni służy polecenie git reset.

Oprócz git add i git commit kluczowe dla kompletnego przepływu pracy opartego na współpracy jest trzecie polecenie: git push. Git push służy do wysyłania zatwierdzonych zmian do zdalnych repozytoriów celem wspólnej analizy. Dzięki temu inni członkowie zespołu mają dostęp do zestawu zapisanych zmian.

Git add snapshot
Gałąź Git
materiały pokrewne

Gałąź Git

Logo Bitbucket
POZNAJ ROZWIĄZANIE

Poznaj środowisko Git z rozwiązaniem Bitbucket Cloud

Polecenia git add nie należy mylić z svn add, które dodaje plik do repozytorium. Git add działa na bardziej abstrakcyjnym poziomie zmian. Oznacza to, że polecenie git add musi zostać wywołane przy każdej zmianie pliku, podczas gdy svn add wystarczy wywołać raz dla każdego pliku. Może się to wydawać zbędne, ale taki sposób pracy znacznie ułatwia organizację projektu.

Przechowalnia


Podstawową funkcją polecenia git add jest przeniesienie oczekujących zmian z katalogu roboczego do przechowalni git. Przechowalnia jest jedną z bardziej unikalnych funkcji systemu Git i jej zrozumienie może zająć trochę czasu osobom przyzwyczajonym do środowiska SVN (czy nawet Mercurial). Można o niej myśleć jako o buforze między katalogiem roboczym a historią projektu. Przechowalnia to jedno z „trzech drzew Git” — obok katalogu roboczego i historii commitów.

Zamiast zatwierdzać wszystkie zmiany wprowadzone od ostatniego commitu, można je pogrupować za sprawą przechowalni w ściśle wyspecjalizowane migawki przed zatwierdzeniem w historii projektu. Umożliwia to wprowadzanie wszelkiego rodzaju zmian w niepowiązanych plikach, a następnie cofanie się i dzielenie ich na logiczne commity przez dodawanie powiązanych zmian do przechowalni i ich zatwierdzanie po kolei. Podobnie jak w każdym systemie kontroli zmian ważne jest tworzenie pomniejszych commitów, tak aby łatwo można było śledzić błędy i cofać zmiany przy minimalnym wpływie na resztę projektu.

Często używane opcje


git add <file>

Zapisuje w przechowalni wszystkie zmiany w pliku <file> do następnego commitu.

git add <directory>

Zapisuje w przechowalni wszystkie zmiany w katalogu <directory> do następnego commitu.

git add -p

Rozpoczyna interaktywną sesję zapisu w przechowalni, która pozwala wybrać fragmenty pliku do dodania do następnego commitu. Przedstawiony zostaje fragment zmian i pojawia się monit o wpisanie polecenia. Użyj y, aby zapisać fragment w przechowalni; n, aby zignorować fragment; s, aby podzielić go na mniejsze fragmenty; e, aby ręcznie wyedytować; albo q, aby wyjść.

Przykłady


Gdy rozpoczynamy nowy projekt, git add pełni taką samą funkcję jak svn import. W celu utworzenia pierwszego commitu w bieżącym katalogu należy użyć następujących dwóch poleceń:

git add .
git commit

Po uruchomieniu projektu można dodawać nowe pliki, przekazując ścieżkę do git add:

git add hello.py
git commit

Powyższych poleceń można również użyć do zapisania zmian w istniejących plikach. Także w tym przypadku Git nie rozróżnia między zapisaniem w przechowalni zmian w nowych plikach a zmianami w plikach, które zostały już dodane do repozytorium.

Podsumowanie


Podsumowując, git add jest pierwszym poleceniem w łańcuchu operacji, które kieruje Git do „zapisania” migawki bieżącego stanu projektu w historii commitów. Gdy polecenie git add zostaje użyte samodzielnie, powoduje przeniesienie oczekujących zmian z katalogu roboczego do przechowalni. Polecenie git status służy do badania bieżącego stanu repozytorium i może zostać użyte do potwierdzenia przeniesienia za pomocą git add. Polecenie git reset umożliwia cofnięcie efektów git add. Następnie polecenie git commit służy do zatwierdzenia migawki katalogu przechowalni w historii commitów repozytorium.


Udostępnij ten artykuł
Następny temat

Zalecane lektury

Dodaj te zasoby do zakładek, aby dowiedzieć się więcej na temat rodzajów zespołów DevOps lub otrzymywać aktualności na temat metodyki DevOps w Atlassian.

Ludzie współpracujący przy ścianie pełnej narzędzi

Blog Bitbucket

Ilustracja DevOps

Ścieżka szkoleniowa DevOps

Demonstracje funkcji z ekspertami Atlassian

Zobacz, jak Bitbucket Cloud współpracuje z Atlassian Open DevOps

Zapisz się do newslettera DevOps

Thank you for signing up