Domanda Come posso controllare un ramo Git remoto?


Qualcuno ha spinto un ramo chiamato test con git push origin test in un repository condiviso. Posso vedere il ramo con git branch -r.

Ora sto provando a controllare il telecomando test ramo.

Ho provato:

  • git checkout test che non fa nulla

  • git checkout origin/test dà * (no branch). Che è fonte di confusione Come posso essere su "nessun ramo"?

Come posso controllare un ramo Git remoto?


5298
2017-11-23 14:23


origine


risposte:


Aggiornare

La risposta di Jakub  in realtà migliora su questo. Con le versioni di Git ≥ 1.6.6, puoi semplicemente:

git fetch
git checkout test

(Utente masukomi sottolinea sotto quello git checkout test NON funzionerà nel git moderno se hai più telecomandi. In questo caso usa git checkout -b test <name of remote>/test).

Vecchia risposta

Prima di poter iniziare a lavorare localmente su un ramo remoto, devi recuperarlo come indicato nelle risposte di seguito.

Per recuperare un ramo, devi semplicemente:

git fetch origin

Questo preleverà tutti i rami remoti per te. Puoi vedere i rami disponibili per il checkout con:

git branch -v -a

Con i rami remoti in mano, ora è necessario controllare la filiale che ti interessa, dandoti una copia di lavoro locale:

git checkout -b test origin/test

7342
2017-11-23 14:26



Nota a margine:  Con Git moderno (> = 1.6.6 ), sei in grado di usare solo

git checkout test

(nota che è 'test' non 'origine / test') per eseguire magici DWIM -Mery e crea un 'test' di ramo locale per te, per il quale upstream sarebbe "origine / test" del ramo di localizzazione remota.


Il * (no branch) in git branch output significa che ci si trova su un ramo senza nome, nel cosiddetto stato "HEAD distaccato" (HEAD punta direttamente al commit e non è un riferimento simbolico ad un ramo locale). Se hai fatto qualche commit su questo branch senza nome, puoi sempre creare un branch locale fuori dal commit corrente:

git checkout -b test HEAD

1088
2017-11-24 00:17



In questo caso, probabilmente vuoi creare un locale test ramo che sta monitorando il telecomando test ramo:

$ git branch test origin/test

Nelle versioni precedenti di git, hai bisogno di un esplicito --track opzione, ma questa è l'impostazione predefinita ora quando si dirama un ramo remoto.


475
2017-11-23 14:27



Risposta accettata  non funziona per te?

Mentre la prima e selezionata risposta è tecnicamente corretta , esiste la possibilità che tu non abbia ancora recuperato tutti gli oggetti e i riferimenti dal repository remoto. In questo caso, riceverai il seguente errore:

$ git checkout -b remote_branch origin/remote_branch

fatale: git checkout: i percorsi di aggiornamento non sono compatibili con i rami di commutazione.
  Hai intenzione di eseguire il checkout di 'origine / remote_branch' che non può essere risolto come commit?

Soluzione

Se ricevi questo messaggio, devi prima fare un git fetch origin dove origin è il nome del repository remoto prima dell'esecuzione git checkout remote_branch. Ecco un esempio completo di risposte:

$ git fetch origin
remote: Counting objects: 140, done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 69 (delta 36), reused 66 (delta 33)
Unpacking objects: 100% (69/69), done.
From https://github.com/githubuser/repo-name
   e6ef1e0..5029161  develop    -> origin/develop
 * [new branch]      demo       -> origin/demo
   d80f8d7..359eab0  master     -> origin/master

$ git checkout demo
Branch demo set up to track remote branch demo from origin.
Switched to a new branch 'demo'

Come puoi vedere, correre git fetch origin recuperato eventuali rami remoti che non eravamo ancora stati configurati per tracciare sul nostro computer locale. Da lì, dato che ora abbiamo un riferimento al ramo remoto, possiamo semplicemente correre git checkout remote_branch e otterremo i vantaggi del monitoraggio remoto.


389
2017-12-07 20:52



Ho provato la soluzione di cui sopra, ma non ha funzionato. Prova questo, funziona:

git fetch origin 'remote_branch':'local_branch_name'

Questo preleverà il ramo remoto e creerà un nuovo ramo locale (se non esiste già) con nome local_branch_namee rintracciare quello remoto in esso.


175
2017-10-18 05:55



Questo sarà DWIM  per un'origine remota non denominata ( documentazione ):

$ git checkout -t remote_name/remote_branch

Per aggiungere un nuovo telecomando, dovrai prima fare quanto segue:

$ git remote add remote_name location_of_remote
$ git fetch remote_name

Il primo dice a Git che il telecomando esiste, il secondo ottiene il commit.


100
2018-04-27 22:37



Uso:

git checkout -b <BRANCH-NAME> <REMOTE-NAME>/<BRANCH-NAME>

Altre risposte non funzionano con il Git moderno nel mio caso benigno. Potrebbe essere necessario eseguire prima il pull se il ramo remoto è nuovo, ma non l'ho verificato.


89
2018-02-21 10:58



Per clonare un repository Git, fare:

git clone <either ssh url /http url>

Il comando sopra controlla tutti i rami, ma solo il master il ramo sarà inizializzato. Se vuoi controllare gli altri rami, fai:

git checkout -t origin/future_branch (for example)

Questo comando controlla il ramo remoto e il nome del ramo locale sarà lo stesso del ramo remoto.

Se desideri sovrascrivere il nome del tuo ramo locale al momento del checkout:

git checkout -t -b enhancement origin/future_branch

Ora il tuo nome di filiale locale è enhancement, ma il nome del tuo ramo remoto è future_branch.

Documentazione


45
2018-01-21 10:04



ok , la risposta è semplice ... In pratica, vedi il ramo, ma non hai ancora una copia locale ...

Devi fetch il ramo...

Puoi semplicemente recuperare e quindi effettuare il checkout al ramo, utilizzare il comando di una riga qui sotto per farlo:

git fetch && git checkout test

Ho anche creato l'immagine qui sotto per condividere le differenze, guarda come fetch funziona e anche come è diverso pull:

git fetch


41
2017-09-05 14:20