2013-06-27 15 views
14

C'è someting Non capisco con l'azione git pull. Ho un repository git foobar con due file: named f1 e f2. Prima di tutto, mi clonare questo repo utilizzando questo comando:GIT tiro: sostituire la versione locale con la versione remota

git clone [email protected]:foobar/foobar.git 

aver modificato alcune sbagliate su entrambi f1 e f2 file, aggiungerli ad git indice e impegnarsi poi.

git add -A 
git commit -m 'a test wrong modification' 

Decido ora che queste modifiche sono errate e voglio sostituire i miei file con la versione remota. Quindi io uso git pull per fare questo:

git pull 

Already up-to-date. 

GIT risponde che il progetto è già aggiornato. Qualcuno può aiutarmi? Cosa c'è che non va ? Come dovrei procedere a sostituire la mia versione locale con la versione remota? Grazie, Ben.

risposta

32
git fetch origin 
git reset --hard origin/master 

Ecco la buona spiegazione su git pull git pull

I git fetch comando importa commit dal un repository remoto nel vostro repo locale. I commit risultanti vengono memorizzati come rami remoti invece dei normali rami locali con cui abbiamo lavorato. Questo ti dà la possibilità di rivedere le modifiche prima di integrarle nella tua copia del progetto.

Comando git pull <remote> recupera la copia del telecomando specificato del ramo corrente e subito si fondono nella copia locale. Questa è la stessa git fetch <remote> seguita da git merge origin/<current-branch>. Dal momento che sta facendo unire i tuoi commit erano ancora lì.

Dopo aver fatto fetch è possibile reimpostare la copia di lavoro con il comando di reset. Hard è di ignorare qualsiasi modifica nella tua copia locale. git reset --hard origin/master

+3

Hai ragione (anche se il primo non è necessario se tutti i cambiamenti sono già disponibili a livello locale), ma sarebbe probabilmente aiutare il PO se spiegare ciò che questi comandi fanno. – hvd

+1

aggiunto spiegazione del problema – Tala

+0

Che cosa succede se si vuole sostituire un file particolare, non tutto, dai orgin/master? –

3

Tirando è principalmente per unire la vostra repository remoto con quello locale. Una risposta breve non è nulla di sbagliato con il tuo setup git dato che le tue ultime modifiche remote sono già presenti nel tuo repository locale. Se qualcun altro invia modifiche al repository remoto che è quando pull viene a portata di mano. Queste modifiche vengono estratte e unite nel repository locale dopo aver eseguito il pull.

Problemi correlati