cassa git: percorsi di aggiornamento è incompatibile con rami di commutazione
-
09-09-2019 - |
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?
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
. (Mentregit 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.