Git: aggiungi vs push vs commit


115

Qual è la differenza tra git add, pushe commit?

Solo un po 'confuso proveniente da SVN, dove "update"' aggiungerà 'cose, e il commit fa un "push" e anche' aggiungerà '

Ci sono tutte le diverse funzioni all'interno di git. Spero in qualche spiegazione dalla tua esperienza.


Risposte:


163
  1. git addaggiunge i file modificati alla coda per essere sottoposti a commit in seguito . I file non vengono salvati

  2. git commitsalva i file che sono stati aggiunti e crea una nuova revisione con un log ... Se non aggiungi alcun file, git non eseguirà alcun commit. Puoi combinare entrambe le azioni congit commit -a

  3. git push invia le modifiche al repository remoto.

Questa figura da questo cheat sheet di git dà una buona idea del flusso di lavoro

inserisci qui la descrizione dell'immagine

git addnon è nella figura perché il modo suggerito per eseguire il commit è la combinazione git commit -a, ma puoi aggiungere mentalmente un git addal blocco di modifiche per capire il flusso.

Infine, il motivo per cui pushè un comando separato è a causa della gitfilosofia di. gitè un sistema di controllo delle versioni distribuito e la directory di lavoro locale è il tuo repository! Tutte le modifiche che effettui vengono immediatamente applicate e registrate. pushviene utilizzato solo per aggiornare il repository remoto (che potresti condividere con altri) quando hai finito con qualunque cosa tu stia lavorando. Questo è un modo accurato per lavorare e salvare le modifiche in locale (senza sovraccarico di rete) e aggiornarle solo quando lo desideri, invece che ad ogni commit. Ciò si traduce indirettamente in commit / branching più facili, ecc. (Perché no, giusto? Quanto ti costa?) Che porta a più punti di salvataggio, senza interferire con il repository.


Quindi spinge il commit localmente e poi spinge al server remoto o è necessario prima eseguire il commit e poi spingere per ottenere il lavoro nel repository remoto?
Andrew S

2
Prima devi eseguire il commit ("git commit") che aggiorna il tuo repository locale (ovvero sulla tua macchina locale), quindi devi eseguire il push al server ("git push") che aggiorna il repository remoto (sul server github per es. )
Romain

Mi piacerebbe una funzione "aggiungi mentalmente" in Git!
Junchen Liu

1
Si consiglia non solo di impegnarsi spesso, ma anche di spingere spesso. Questo protegge il tuo lavoro quando il tuo disco rigido si blocca.
CCC

86

git add seleziona le modifiche

git commit registra le modifiche LOCALMENTE

git push condivide le modifiche


22
  • git add aggiunge file all'indice Git, che è un'area di staging per oggetti preparati per essere sottoposti a commit.
  • git commitsalva i file nell'indice nel repository, git commit -aè una scorciatoia per aggiungere prima tutti i file tracciati modificati all'indice.
  • git push invia tutte le modifiche in sospeso al repository remoto a cui è mappato il tuo ramo (es. su GitHub).

Per capire Git dovresti investire più impegno che dare un'occhiata alla documentazione, ma ne vale sicuramente la pena. Basta non provare a mappare i comandi Git direttamente su Subversion, poiché la maggior parte di essi non ha una controparte diretta.


Qualcuno dovrebbe spiegare la differenza tra GitHub locale e remoto. Quello che hai in locale e remte. Questa è la chiave che devi trovare
Mehdi Amrollahi,

12

Ero confuso su cosa fa veramente "add". Ho appena letto un paragrafo molto illuminante dal libro Git Pro che vorrei aggiungere qui, perché chiarisce le cose

“Si scopre che Git mette in scena un file esattamente come è quando esegui il comando git add. Se esegui il commit ora, la versione di benchmarks.rb com'era l'ultima volta che hai eseguito il comando git add è come andrà nel commit, non la versione del file come appare nella tua directory di lavoro quando esegui git commit. Se modifichi un file dopo aver eseguito git add, devi eseguire nuovamente git add per inserire l'ultima versione del file: "

Estratto da: Chacon, Scott. "Pro Git." Springer, 2009-08-19T00: 00: 00 + 00: 00. iBook. Questo materiale può essere protetto da copyright.


7

add dice a git di iniziare a tracciare un file.

commit esegue il commit delle modifiche correnti nel repository locale

push spinge il repository locale a monte.



5

PDF molto carino su molti segreti GIT.

Aggiungi è uguale all'aggiunta di svn (come mai a volte viene utilizzato per contrassegnare il file risolto).

Commit anche è lo stesso come svn di, ma commettono il cambiamento nella vostra repository locale.


2
Ora devo andare a cercare svn add e commit. La mia grande paura: i loro documenti mi faranno quindi riferimento a git add e commit. E lord_t è l'autore di detti documenti.
eric

L'autore della domanda conosceva SVN, quindi ho pensato che conoscesse i comandi di svn.
lord_t

0

add -in git è usato per dire a git quali file vogliamo impegnare, mette i file nell'area di staging

commit-in git viene utilizzato per salvare i file sulla macchina locale in modo che se apportiamo modifiche o addirittura eliminiamo i file possiamo ancora recuperare i file salvati

push: se eseguiamo il commit dei nostri file sulla macchina locale, sono ancora soggetti a essere persi se la nostra macchina locale si perde, viene danneggiata, ecc., Per mantenere i nostri file al sicuro o per condividere i nostri file di solito vogliamo mantenere i nostri file su un telecomando repository come Github. Per salvare su repository remoti usiamo push

esempio Messa in scena di un file denominato index.html git add index.html

Salvataggio di un file che è in fase git commit -m 'nome del tuo commit'

Invio di un file a Github git push origin master

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.