Domanda Creare un ramo Git esistente tracciare un ramo remoto?


So come creare un nuovo ramo che tenga traccia delle filiali remote, ma come faccio a creare un ramo esistente per tenere traccia di un ramo remoto?

So che posso solo modificare il .git/config file, ma sembra che ci dovrebbe essere un modo più semplice.


3073
2018-02-06 15:14


origine


risposte:


Dato un ramo foo e un telecomando upstream:

A partire da Git 1.8.0:

git branch -u upstream/foo

Oppure, se ramo locale foo non è il ramo attuale:

git branch -u upstream/foo foo

Oppure, se ti piace digitare comandi più lunghi, questi sono equivalenti ai due precedenti:

git branch --set-upstream-to=upstream/foo

git branch --set-upstream-to=upstream/foo foo

A partire da Git 1.7.0:

git branch --set-upstream foo upstream/foo

Gli appunti:

Tutti i comandi sopra indicati causeranno un ramo locale foo per tracciare il ramo remoto foo da remoto upstream. La vecchia sintassi (1.7.x) è deprecata a favore della nuova sintassi (1.8+). La nuova sintassi dovrebbe essere più intuitiva e facile da ricordare.


Guarda anche: Perché devo fare `--set-upstream 'tutto il tempo?


3744
2018-02-18 03:06



È possibile eseguire quanto segue (presupponendo che si sia verificato il master e si desideri inviare a un master di filiale remoto):

Imposta il "telecomando" se non lo hai già

git remote add origin ssh://...

Ora configura il master da sapere per tracciare:

git config branch.master.remote origin
git config branch.master.merge refs/heads/master

E spingere:

git push origin master

206
2018-03-09 08:50



Lo faccio come un effetto collaterale di spingere con il -u opzione come in

$ git push -u origin branch-name

L'opzione lunga equivalente è --set-upstream.

Il git-branch il comando comprende anche --set-upstream, ma il suo utilizzo può essere fonte di confusione. Versione 1.8.0 modifica l'interfaccia.

git branch --set-upstream è deprecato e può essere rimosso in un futuro relativamente lontano. git branch [-u|--set-upstream-to] è stato introdotto con un ordine di argomenti più sicuro.

...

Era allettante dire git branch --set-upstream origin/master, ma questo dice a Git di organizzare il ramo locale "origine / master" da integrare con il ramo attualmente estratto, il che è altamente improbabile che cosa intendesse l'utente. L'opzione è deprecata; usa il nuovo --set-upstream-to (con uno short-and-sweet -uopzione invece.

Dì che hai un locale foo ramo e voglio che tratti il ​​ramo con lo stesso nome del suo upstream. Fai in modo che questo accada

$ git branch foo
$ git branch --set-upstream-to=origin/foo

o semplicemente

$ git branch --set-upstream-to=origin/foo foo

130
2017-10-02 16:24



Potresti trovare il git_remote_branch strumento utile. Offre semplici comandi per creare, pubblicare, eliminare, tracciare e rinominare i rami remoti. Una caratteristica interessante è che puoi chiedere a grb comando per spiegare quali comandi git avrebbe eseguito.

grb explain create my_branch github
# git_remote_branch version 0.3.0

# List of operations to do to create a new remote branch and track it locally:
git push github master:refs/heads/my_branch
git fetch github
git branch --track my_branch github/my_branch
git checkout my_branch

51
2018-02-06 17:11



In realtà perché la risposta accettata funzioni:

git remote add upstream <remote-url>
git fetch upstream
git branch -f --track qa upstream/qa
# OR:
git branch --set-upstream qa upstream/qa

49
2017-11-23 12:08



Credo che nel Git 1.5.x potresti creare una filiale locale $BRANCH traccia un ramo remoto origin/$BRANCH, come questo.

Dato che $BRANCH e origin/$BRANCH esiste e al momento non hai eseguito il check-out $BRANCH (cambia se hai), fai:

git branch -f --track $BRANCH origin/$BRANCH

Questo ricrea $BRANCH come un ramo di monitoraggio. Il -f forza la creazione nonostante $BRANCH già esistente. --track è facoltativo se sono presenti i soliti valori predefiniti (ovvero, il parametro git-config branch.autosetupmerge è vero).

Nota, se origin/$BRANCH non esiste ancora, puoi crearlo spingendo il tuo locale $BRANCH nel repository remoto con:

git push origin $BRANCH

Seguito dal comando precedente per promuovere il ramo locale in un ramo di monitoraggio.


40
2017-07-28 09:33



1- aggiorna i tuoi meta-dati locali usando: git fetch --all

enter image description here

2- mostra il tuo remoto e filiali locali utilizzando: git branch -a , vedere il seguente screenshot

enter image description here

3- passare al ramo di destinazione, che si desidera collegare con il telecomando: utilizzando

git checkout branchName

esempio :

enter image description here 

4- Collegare il ramo locale a un ramo remoto utilizzando:

git branch --set-upstream-to nameOfRemoteBranch

N.B: nameOfRemoteBranch : per copiare dall'output del passaggio 2 "git branch -r"

Esempio di utilizzo:

enter image description here


28
2018-06-06 14:21



Assicurati di eseguire:

git config push.default tracking

essere in grado di spingere senza problemi


22
2017-08-29 21:38



La modifica .git/config è probabilmente il modo più semplice e veloce. Questo è ciò che stanno facendo i comandi Git per la gestione dei rami remoti.

Se non vuoi muck con il file a mano (e non è così difficile da fare), puoi sempre usarlo git config per farlo ... ma ancora, questo modificherà il file .git/config file, comunque.

Ci sono, naturalmente, i modi per tenere traccia automaticamente di un ramo remoto durante l'utilizzo git checkout (passando il --track flag, ad esempio), ma questi comandi funzionano con nuovo rami, non esistenti.


21
2018-02-06 15:17



In brevissimo

git branch --set-upstream yourLocalBranchName origin/develop

Questo renderà il tuo yourLocalBranchName rintracciare il ramo remoto chiamato develop.


16
2017-10-09 07:19