Domanda Git preleva il ramo remoto


Io e il mio collega stiamo lavorando sullo stesso repository che abbiamo suddiviso in due rami ciascuno tecnicamente per diversi progetti, ma hanno delle somiglianze, quindi a volte vorremmo riabbracciare il * master dal ramo.

Tuttavia, ho il ramo. La mia domanda è: come può il mio collega tirare in modo specifico quel ramo? UN git clone del repository non sembra creare i rami localmente per lui, anche se posso vederli dal vivo dopo una spinta sulla mia estremità.

Inoltre, quando ho creato il ramo originale, l'ho fatto -b checkout. Non sono sicuro se questo faccia molta differenza?

iMac:test_solar dave$ git branch -r
origin/HEAD -> origin/master
origin/daves_branch
origin/discover
origin/master

git fetch origin discover
git checkout discover

Questi sono i comandi che ho eseguito. Ma sicuramente non sta funzionando. Voglio essere in grado di controllare quel ramo e quindi spingere e riprendere solo i cambi di filiali da vari collaboratori o workstation.


1596
2018-03-02 17:06


origine


risposte:


È necessario creare un ramo locale che tenga traccia di un ramo remoto. Il seguente comando creerà un ramo locale chiamato daves_branch, tracciamento del ramo remoto origine / daves_branch. Quando si inseriscono le modifiche, il ramo remoto verrà aggiornato.

Per la maggior parte delle versioni di git:

git checkout --track origin/daves_branch

--track è una scorciatoia per git checkout -b [branch] [remotename]/[branch] dove [remotename] è origine in questo caso e [branch] è due volte uguale, daves_branch in questo caso.

Per git 1.5.6.5 hai avuto bisogno di questo:

git checkout --track -b daves_branch origin/daves_branch

Per git 1.7.2.3 e versioni successive questo è sufficiente (potrebbe essere iniziato in precedenza ma questa è la prima conferma che ho potuto trovare rapidamente):

git checkout daves_branch

Nota che con le versioni git recenti, questo comando non creerà un ramo locale e ti metterà in uno stato 'HEAD distaccato'. Se vuoi un ramo locale, usa il --track opzione. Tutti i dettagli qui: http://git-scm.com/book/en/v2/Git-Branching-Remote-Branches#Tracking-Branches


2215
2018-03-02 17:45



ho usato fetch seguito da checkout ...

git fetch <remote> <rbranch>:<lbranch> 
git checkout <lbranch>

... dove <rbranch> è il ramo remoto o fonte ref e <lbranch> è il finora inesistente filiale locale o rif vuoi tracciare e che probabilmente vuoi nominare come il ramo remoto o il ref sorgente. Questo è spiegato sotto opzioni nella spiegazione di <refspec>.

Git è così intelligente che auto completa il primo comando se io linguetta dopo le prime lettere del ramo remoto. IE: Non ho nemmeno bisogno di nominare il ramo locale, Git copia automaticamente il nome del ramo remoto per me. Grazie Git!

Anche come la risposta in questo post SO simile mostra, se non si nomina il ramo locale in fetch, puoi ancora crearlo quando lo controlli usando il -b bandiera. IE:  git fetch <remote> <branch> seguito da git checkout -b <branch> <remote>/<branch> fa esattamente la stessa cosa della mia risposta iniziale. E evidentemente se il tuo repo ha solo uno remoto, quindi puoi semplicemente farlo git checkout <branch> dopo fetch e creerà un ramo locale per te. PER ESEMPIO: Hai appena clonato un repository e vuoi controllare i rami aggiuntivi dal telecomando.

Credo che parte della documentazione per fetch potrebbe essere stato copiato letteralmente da pull. In particolare la sezione su <refspec> in opzioni è la stessa. Tuttavia, non ci credo fetch sarà mai merge, in modo che se si lascia vuoto il lato di destinazione del colon fetch  non dovrebbe fare nulla.

Nota che git fetch <remote> <refspec> è l'abbreviazione di git fetch <remote> <refspec>: che quindi non farebbe nulla, ma git fetch <remote> <tag> equivale a git fetch <remote> <tag>:<tag> che dovrebbe copiare il telecomando <tag> localmente.

Immagino sia utile solo se vuoi copiare un ramo remoto localmente, ma non necessariamente controllarlo subito. Altrimenti ora lo userei la risposta accettata sopra, che è spiegato in dettaglio nella prima sezione del descrizione del checkout e più tardi nel opzioni sezione sotto la spiegazione di --track, poiché è un 1-liner. Bene... una sorta di 1-liner, perché lo faresti ancora devo correre git fetch <remote> primo.

A proposito: l'ordine del <refspecs> (fonte: destinazione) spiega il bizzarro metodo pre Git-1.7 per eliminazione dei rami remoti. IE: non inserire nulla nel refspec di destinazione.


740
2018-04-19 00:45



Se stai provando a "checkout" un nuovo ramo remoto (che esiste solo sul telecomando, ma non localmente), ecco di cosa avrai bisogno:

git fetch origin
git checkout --track origin/<remote_branch_name>

Questo presuppone che tu voglia recuperare origine. In caso contrario, sostituire origine dal tuo a distanza nome.


270
2018-05-17 12:14



Per controllare myBranch che esiste da remoto e non a livello locale - Questo ha funzionato per me:

git fetch --all
git checkout myBranch

Ho ricevuto questo messaggio:

Branch myBranch set up to track remote branch myBranch from origin
Switched to a new branch 'myBranch'

88
2017-11-12 03:36



Uso git branch -a (filiali locali e remote) o git branch -r (solo rami remoti) per vedere tutti i telecomandi e i loro rami. Puoi quindi fare a git checkout -t remotes/repo/branch al telecomando e creare una filiale locale.

C'è anche un comando git ls-remote per vedere tutti i riferimenti e tag per quel telecomando.


37
2018-03-02 17:16



Il titolo e la domanda sono confusi:

  • Git preleva il ramo remoto
  • come può il mio collega tirare quel ramo in modo specifico.

Se la domanda è come posso far funzionare un ramo remoto o come eseguire il checkout di un ramo remoto, una soluzione più semplice è:

Con git (> = 1.6.6) puoi usare:

git checkout <branch_name>

Se locale <branch_name> non è stato trovato ma esiste un ramo di rilevamento in un solo telecomando con un nome corrispondente, considerato equivalente a:

git checkout -b <branch_name> --track <remote>/<branch_name>

vedi la documentazione per il checkout di git

Per il tuo amico:

$ git checkout discover
Branch discover set up to track remote branch discover
Switched to a new branch 'discover'

33
2018-03-31 10:48



git checkout -b serverfix origin/serverfix

Questa è un'operazione abbastanza comune che git fornisce la stenografia --track:

git checkout --track origin/serverfix

In effetti, questo è così comune che c'è anche una scorciatoia per quella scorciatoia. Se il nome del ramo che stai cercando di pagare (a) non esiste e (b) corrisponde esattamente a un nome su un solo telecomando, Git creerà un ramo di monitoraggio per te:

git checkout serverfix

Per impostare un ramo locale con un nome diverso rispetto al ramo remoto, puoi facilmente utilizzare la prima versione con un nome di ramo locale diverso:

git checkout -b sf origin/serverfix

Ora, il tuo ramo locale sf estrarrà automaticamente da origine / serverfix.

Fonte: Pro Git 2nd Edition, scritto da Scott Chacon e Ben Straub(tagliato per leggibilità)


24
2018-03-18 00:21