Git: add vs push vs commit


115

Jaka jest różnica między git add, pushi 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:


163
  1. git adddodaje zmodyfikowane pliki do kolejki w celu późniejszego zatwierdzenia . Pliki nie są zatwierdzone

  2. git commitzatwierdza 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

  3. git push przesyła zmiany do zdalnego repozytorium.

Ta liczba z tego ściągawki git daje dobre wyobrażenie o przebiegu pracy

wprowadź opis obrazu tutaj

git addNie ma tego na rysunku, ponieważ sugerowany sposób zatwierdzenia jest kombinacją git commit -a, ale możesz dodać mentalnie a git adddo bloku zmian, aby zrozumieć przepływ.

Wreszcie, powodem, dla którego pushjest to oddzielne polecenie, jest gitfilozofia. gitjest rozproszonym systemem wersjonowania, a twój lokalny katalog roboczy jest twoim repozytorium! Wszystkie wprowadzone zmiany są natychmiast odzwierciedlane i rejestrowane. pushsł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.


Czy więc wypychanie zatwierdzania lokalnie, a następnie wypychanie do zdalnego serwera, czy też trzeba najpierw zatwierdzić, a następnie wypchnąć, aby uzyskać pracę do zdalnego repozytorium?
Andrew S,

2
Najpierw musisz zatwierdzić ("git commit"), które zaktualizują twoje lokalne repozytorium (aka na twoim lokalnym komputerze), a następnie musisz wypchnąć na serwer ("git push"), który zaktualizuje zdalne repozytorium (na serwerze github np. )
Romain,

Bardzo chciałbym mieć funkcję dodawania mentalnego w Git!
Junchen Liu

1
Zaleca się nie tylko częste angażowanie się, ale także częste naciskanie. Chroni to twoją pracę w przypadku awarii dysku twardego.
CCC

86

git add wybiera zmiany

git commit rekordy zmieniają się LOKALNIE

git push akcje zmiany


22
  • git add dodaje pliki do indeksu Gita, który jest obszarem pomostowym dla obiektów przygotowanych do zatwierdzenia.
  • git commitzatwierdza pliki w indeksie do repozytorium, git commit -ajest 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.


Ktoś powinien wyjaśnić różnicę między lokalnym a zdalnym githubem. Co masz w lokalnym i remte. To jest klucz, który musisz znaleźć
Mehdi Amrollahi,

12

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.


7

add nakazuje gitowi rozpoczęcie śledzenia pliku.

commit zatwierdza bieżące zmiany w lokalnym repozytorium

push wypycha lokalne repozytorium w górę.



5

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.


2
Teraz muszę poszukać svn dodać i zatwierdzić. Mój wielki strach: ich doktorzy skierują mnie do gita dodawania i zatwierdzania. A lord_t jest autorem wspomnianych dokumentów.
eric

Autor pytania znał SVN, więc założyłem, że zna polecenia svn.
lord_t

0

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.