Jaka jest różnica między git add
, push
i commit
?
Trochę zdezorientowany pochodzący z SVN, gdzie „aktualizacja” „doda” rzeczy, a zatwierdzenie „wypycha” i „doda” również
W git są różne funkcje. Mając nadzieję na wyjaśnienie z twojego doświadczenia.
Odpowiedzi:
git add
dodaje zmodyfikowane pliki do kolejki w celu późniejszego zatwierdzenia . Pliki nie są zatwierdzonegit commit
zatwierdza dodane pliki i tworzy nową wersję z logiem ... Jeśli nie dodasz żadnych plików, git niczego nie zatwierdzi. Możesz połączyć obie akcje zgit commit -a
git push
przesyła zmiany do zdalnego repozytorium.Ta liczba z tego ściągawki git daje dobre wyobrażenie o przebiegu pracy
git add
Nie ma tego na rysunku, ponieważ sugerowany sposób zatwierdzenia jest kombinacjągit commit -a
, ale możesz dodać mentalnie agit add
do bloku zmian, aby zrozumieć przepływ.Wreszcie, powodem, dla którego
push
jest to oddzielne polecenie, jestgit
filozofia.git
jest rozproszonym systemem wersjonowania, a twój lokalny katalog roboczy jest twoim repozytorium! Wszystkie wprowadzone zmiany są natychmiast odzwierciedlane i rejestrowane.push
służy tylko do aktualizowania zdalnego repozytorium (które możesz udostępniać innym), gdy skończysz z tym, nad czym pracujesz. Jest to zgrabny sposób pracy i zapisywania zmian lokalnie (bez obciążenia sieci) i aktualizowania go tylko wtedy, gdy chcesz, a nie przy każdym zatwierdzeniu. Pośrednio prowadzi to do łatwiejszych zatwierdzeń / rozgałęzień itp. (Dlaczego nie, prawda? Ile to kosztuje?), Co prowadzi do większej liczby punktów zapisu, bez ingerowania w repozytorium.źródło
git add
wybiera zmianygit commit
rekordy zmieniają się LOKALNIEgit push
akcje zmianyźródło
git add
dodaje pliki do indeksu Gita, który jest obszarem pomostowym dla obiektów przygotowanych do zatwierdzenia.git commit
zatwierdza pliki w indeksie do repozytorium,git commit -a
jest skrótem do dodawania najpierw wszystkich zmodyfikowanych śledzonych plików do indeksu.git push
wysyła wszystkie oczekujące zmiany do zdalnego repozytorium, do którego mapowana jest Twoja gałąź (np. na GitHub).Aby zrozumieć Git, trzeba by włożyć więcej wysiłku niż tylko przejrzenie dokumentacji, ale zdecydowanie warto. Po prostu nie próbuj mapować poleceń Git bezpośrednio do Subversion, ponieważ większość z nich nie ma bezpośredniego odpowiednika.
źródło
Byłem zdezorientowany, co naprawdę robi „add”. Właśnie przeczytałem bardzo pouczający akapit z książki Git Pro, który chciałbym tutaj dodać, ponieważ wyjaśnia rzeczy
„Okazuje się, że Git przygotowuje plik dokładnie tak, jak jest to po uruchomieniu polecenia git add. Jeśli zatwierdzisz teraz, wersja benchmarks.rb taka, jaka była, kiedy ostatnio uruchomiłeś polecenie git add, to sposób, w jaki trafi do zatwierdzenia, a nie wersja pliku, jak wygląda w katalogu roboczym po uruchomieniu git commit. Jeśli zmodyfikujesz plik po uruchomieniu git add, musisz ponownie uruchomić git add, aby przygotować najnowszą wersję pliku: ”
Fragment od: Chacon, Scott. „Pro Git”. Springer, 2009-08-19T00: 00: 00 + 00: 00. iBooks. Ten materiał może być chroniony prawem autorskim.
źródło
add nakazuje gitowi rozpoczęcie śledzenia pliku.
commit zatwierdza bieżące zmiany w lokalnym repozytorium
push wypycha lokalne repozytorium w górę.
źródło
Uważam, że ten obraz ma duże znaczenie:
(od: Oliver Steele -My Git Workflow (2008) )
źródło
Bardzo ładny pdf o wielu sekretach GIT.
Add działa tak samo jak svn's add (jakkolwiek czasami jest używane do oznaczania pliku jako rozwiązany).
Commit jest również taki sam jak svn, ale zatwierdza zmianę w lokalnym repozytorium.
źródło
add -in git służy do informowania git, które pliki chcemy zatwierdzić, umieszcza pliki w obszarze pomostowym
commit- in git służy do zapisywania plików na komputerze lokalnym, więc jeśli wprowadzimy jakiekolwiek zmiany lub nawet usuniemy pliki, nadal możemy odzyskać nasze zatwierdzone pliki
push - jeśli zatwierdzimy nasze pliki na komputerze lokalnym, nadal są one narażone na utratę, jeśli nasz lokalny komputer zostanie zgubiony, uszkodzony itp., Aby zapewnić bezpieczeństwo naszych plików lub udostępnić nasze pliki, zwykle chcemy przechowywać nasze pliki zdalnie repozytorium takie jak Github. Aby zapisać na zdalnych repozytoriach, używamy push
przykład Pomostowanie pliku o nazwie index.html git add index.html
Zatwierdzenie pliku, który jest wystawiony git commit -m 'nazwa twojego zatwierdzenia'
Przesyłanie pliku do Github git push origin master
źródło