Aggiorna un ramo locale con le modifiche da un ramo remoto tracciato


95

Ho un ramo locale chiamato " my_local_branch", che tiene traccia di un ramo remoto origin/my_remote_branch.

Ora, il ramo remoto è stato aggiornato e io sono su " my_local_branch" e desidero inserire tali modifiche. Dovrei solo fare:

git pull origin my_remote_branch:my_local_branch

È questo il modo corretto?

Risposte:


72

Hai impostato a monte di quel ramo

(vedere:

git branch -f --track my_local_branch origin / my_remote_branch
# OR (se my_local_branch è attualmente estratto):
$ git branch --set-upstream-to my_local_branch origin / my_remote_branch

( git branch -f --tracknon funzionerà se il ramo è estratto: usa invece il secondo comando git branch --set-upstream-to , altrimenti otterrai " fatal: Cannot force update the current branch.")

Ciò significa che il tuo ramo è già configurato con:

branch.my_local_branch.remote origin
branch.my_local_branch.merge my_remote_branch

Git ha già tutte le informazioni necessarie.
In quel caso:

# if you weren't already on my_local_branch branch:
git checkout my_local_branch 
# then:
git pull

è abbastanza.


Se non avessi stabilito quella relazione di ramo a monte quando si trattava di spingere il tuo " my_local_branch", allora git push -u origin my_local_branch:my_remote_branchsarebbe stato sufficiente un semplice push e impostare il ramo a monte.
Dopodiché, per i successivi tiri / spinte, git pullo git pushsarebbe stato, ancora una volta, sufficiente.


L'OP afferma che stanno già monitorando il ramo remoto.
Amber

7
@ Ambra da qui la mia risposta: git pullè abbastanza.
VonC

Il primo comando git branch -f --track master origin/masterrestituisce un errore:fatal: Cannot force update the current branch.
Mark Kramer

@MarkKramer Sì, ho modificato la risposta per rendere più chiaro che il secondo comando deve essere utilizzato se il ramo locale è attualmente estratto.
VonC

Dovresti anche cambiarlo in --set-upstream-to, --set-upstreamè deprecato e verrà rimosso.
Mark Kramer

86

Non usi la :sintassi: pullmodifica sempre il ramo attualmente estratto. Quindi:

git pull origin my_remote_branch

mentre hai fatto il my_local_branchcheck-out farai quello che vuoi.

Dato che hai già il ramo di tracciamento impostato, non devi nemmeno specificare - potresti semplicemente fare ...

git pull

durante il my_local_branchcheck-out, e si aggiornerà dal ramo tracciato.


Questa dovrebbe essere la risposta corretta. E 'così semplice.
m4l490n
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.