Domanda

Il mio problema è legato alla errore Git irreversibile quando si passa ramo .

provo a prendere un ramo remoto con il comando

git checkout -b local-name origin/remote-name

ma ottengo questo messaggio di errore:

  

fatale: git checkout:. Aggiornare i percorsi è incompatibile con rami di commutazione
  Hai intenzione di cassa '/ remote-name di origine', che non può essere risolto come commettere?

Se genero manualmente un ramo e poi tirare il ramo a distanza, funziona, proprio come fare un nuovo clone e controllando il ramo out.

Perché non funziona sul repository con cui lavoro?

È stato utile?

Soluzione

Credo che questo si verifica quando si sta cercando di checkout una filiale remota che il repo git locale non è a conoscenza di ancora. Prova:

git remote show origin

Se il ramo remoto da cassa è in fase di "Nuove filiali remote" e non "filiali remote cingolati" allora avete bisogno di prenderli prima:

git remote update
git fetch

Ora dovrebbe funzionare:

git checkout -b local-name origin/remote-name

Altri suggerimenti

sintassi alternativa,

git fetch origin remote_branch_name:local_branch_name

Dopo aver provato la maggior parte di quello che ho potuto leggere in questa discussione senza successo, ci siamo imbattuti in questo: ramo remoto non presentandosi in "git branch - r "

Si è scoperto che il mio file .git / config non era corretto. Dopo aver fatto una semplice correzione tutti i rami si presentò.

Il passaggio da

[remote "origin"]
    url = http://stash.server.com/scm/EX/project.git
    fetch = +refs/heads/master:refs/remotes/origin/master

a

[remote "origin"]
    url = http://stash.server.com/scm/EX/project.git
    fetch = +refs/heads/*:refs/remotes/origin/*

Forse il trucco

Non so se questo è utile o esattamente corrispondente alla tua domanda, ma se si sta cercando di recuperare e nella verifica solo un singola ramo dal repository remoto, quindi i seguenti comandi git farà il trucco :

url= << URL TO REPOSITORY >>
branch= << BRANCH NAME >>

git init
git remote add origin $url
git fetch origin $branch:origin/$branch
git checkout -b $branch --track origin/$branch

nessuna delle precedenti ha lavorato per me. La mia situazione è leggermente diversa, il mio ramo remoto non è a origine . ma in un repository diverso.

git remote add remoterepo GIT_URL.git
git fetch remoterepo
git checkout -b branchname remoterepo/branchname

tip:. Se non si vede il ramo remoto nel seguente git branch -v -a uscita non c'è modo di check it out

Confermato a lavorare su 1.7.5.4

Per me ciò che ha funzionato è stato:

git fetch

che tira tutti gli arbitri verso il basso per la macchina per tutti i rami in remoto. Poi ho potuto fare

git checkout <branchname>

e che ha funzionato perfettamente. Simile al top votato risposta, ma un po 'più semplice.

Ho il sospetto che non v'è alcun ramo remoto denominato remote-nome, ma che avete inavvertitamente creato una filiale locale remoto nome di nome di origine /.

E 'possibile ad un certo punto digitato:

git branch origin/remote-name

In questo modo la creazione di una filiale locale di nome origine / remote-name? Digitare il seguente comando:

git checkout origin/remote-name

Ti sia vedere:

Switched to branch "origin/remote-name"

che significa che è davvero una filiale locale mis-denominata o

Note: moving to "origin/rework-isscoring" which isn't a local branch
If you want to create a new branch from this checkout, you may do so
(now or later) by using -b with the checkout command again. Example:
  git checkout -b 

che significa che è in realtà un ramo remoto.

Non è molto intuitivo, ma questo funziona bene per me ...

  mkdir remote.git & cd remote.git & git init
  git remote add origin $REPO
  git fetch origin $BRANCH:refs/remotes/origin/$BRANCH        

Quindi, eseguire il comando git branch --track ...

  git branch --track $BRANCH origin/$BRANCH

Per quanto mi riguarda ho avuto un errore di battitura e la mia filiale remota non esisteva

Usa git branch -a alla lista filiali remote

Potrebbe il problema sia legato a questa altra domanda SO "problema checkout" ?

cioè .: un problema relativo a:

  • una vecchia versione di Git
  • una sintassi cassa curiosa, che dovrebbe essere: git checkout -b [<new_branch>] [<start_point>], con [<start_point>] riferimento al nome di un commit in cui iniziare la nuova filiale, e 'origin/remote-name' non è che
    . (Mentre git branch supporta uno start_point essere il nome di un ramo remoto)

Nota: ciò che il href="http://github.com/git/git/blob/8c4e4ef0f575cd60fb4bb6a70305fcb0ed85da6a/git-checkout.sh" rel="nofollow noreferrer"> checkout.sh sceneggiatura dice è:

  if test '' != "$newbranch$force$merge"
  then
    die "git checkout: updating paths is incompatible with switching branches/forcing$hint"
  fi

E 'come cassa sintassi git -b [] [remote_branch_name] era sia rinominando il ramo e reimpostando il nuovo punto di partenza del nuovo ramo, che è considerato incompatibile.

Dopo il recupero un triliardo di volte telecomandi ancora aggiunti non si fece vedere, anche se le macchie erano in piscina. Si scopre che le - i tag non deve essere somministrato a git remote add per qualsiasi motivo. È possibile rimuovere manualmente dal .git / config per rendere git fetch creare gli arbitri.

scroll top