2012-10-23 19 views
51

ho questo strano problema, ogni volta che faccio git push si rifiuta di fare qualsiasi cosa:Git: fatale: il master ramo attuale ha più filiali a monte, rifiutando di spingere

fatal: The current branch master has multiple upstream branches, refusing to push.

Quando faccio git push -u origin master sembrare per impostarlo come un ramo di monitoraggio:

Branch master set up to track remote branch master from origin.

Ma la prossima volta che provo git push si rifiuta di farlo di nuovo. Ho provato a google ma sembra che il problema sia abbastanza nuovo e non ho trovato nessuna spiegazione per questo comportamento. Idee?

Aggiornamento:./git/config

[remote "origin"] 
    fetch = +refs/heads/*:refs/remotes/origin/* 
    url = [email protected]:milk.git 
[branch "master"] 
    remote = origin 
    merge = refs/heads/master 

Update2: risolto con git config remote.origin.push HEAD la seguente riga è apparso in .git/config a [remote "origin"] sezione:

push = HEAD 

Update3:

$ git branch -vv 
    billing  633c796 [origin/billing: behind 889] links 
* master  1a0de50 [origin/master: ahead 1] more fixes 
    new_master 3b880d7 [origin/new_master] branches diverged 
    photo_stacks 29c8f0d [origin/photo_stacks] 1st try 
    responsive 1dad980 [origin/responsive] update 

$ git push 
fatal: The current branch master has multiple upstream branches, refusing to push. 
+0

git 2.0? L'ultimo su git-scm.com è 1.8.0, non vedo nulla nel repository github per git .. mi manca qualcosa? – Collin

+0

Spiacente, mi dispiace, git 1.8.0, non so perché ho scritto 2.0 – firedev

+1

Che aspetto ha il tuo file '.git/config', specialmente le sezioni per questo ramo e la tua origine? – twalberg

risposta

87

Si potrebbe desiderare di effettuare le seguenti operazioni:

git config remote.origin.push HEAD 

Spingendo senza argomenti su un ramo maestro può portare al messaggio di errore. Non sono sicuro che si tratti di un problema di regressione o se è sempre stato così.

+0

Grazie, che ha aiutato, ma come? Vedo una nuova riga nella sezione '[remote" origin "]' in config: 'push = HEAD'. E perché stava dicendo che il master ha più rami upstream? – firedev

+0

'git push' per impostazione predefinita spinge tutti i rami verso il remoto, aggiungendo la configurazione che dici a git di spingere solo il ramo su cui ti trovi. Forse il messaggio di errore che si ottiene è sbagliato, voglio dire che il nome del ramo è sbagliato (master), forse ci sono altri rami che causano questo problema. Se non hai mai avuto questo problema con la versione precedente di git, potrebbe significare che c'è un problema di regressione. –

+0

Ancora mesi dopo non capisco perché questo sta accadendo, ogni tanto alcuni repository si rifiutano di spingere. – firedev

11

È necessario specificare quale ramo si sta spingendo. git push tenterebbe automaticamente di inviare tutti gli errori e i tag tracciati dai rami locali. È possibile che le filiali online sul server siano avanzate. Quindi potresti finire con questa situazione. Si dovrebbe usare semplicemente

git push origin master 

E anche per riconciliare le modifiche fanno un git pull che aggiornerà i vostri arbitri locali con l'una dal server.

+0

Ma ho 'git push origin master 'anche con la chiave' -u' che dovrebbe impostare 'origine/master' come upstream per il ramo' master'. Non importa come lo faccio, la prossima volta che si rifiuta di 'git push' – firedev

+0

prova a clonare git di nuovo in un altro o prova i suggerimenti di Pietro sotto – redDragonzz

25

Run git config -l e guardare per vedere se si dispone di più linee contenenti branch.master * riferimenti Il [ramo "master"] sezione può essere duplicata ~/.gitconfig e .git/config. eliminazione di quello in ~/.gitconfig fissato il rilevamento ramo monte mutiple per me .

+1

Ho avuto questo: 'branch.master.remote = origine branch.master.merge = refs/heads/master' e infatti avevo master' branch "' in '~/.gitconfig'. Cancellato, vedrà come va, grazie! – firedev

+1

Non so come sia successo, ma ho avuto 'branch.master.remote = origin' e' branch.master.merge = refs/heads/master' entrambi _exactly_ ripetuti due volte in '.git/config' ... Rimozione della duplicazione risolto questo problema. – Lucas

+0

Ho finito con un problema simile su uno dei miei rami dopo averlo rinominato localmente e aver premuto il nuovo nome upstream. Il mio file .git/config aveva due voci. E come suggerito da Lucas, l'eliminazione del duplicato risolve questo problema. –

1

Va bene, dopo aver affrontato due volte con nuovi repository ho una risposta.

git -v remoto

git rm a distanza (tutto diversa origine, se hai aggiunto altri telecomandi)

git origine rm remoto

! avviso: più di un branch.master.a distanza < - questo è un bene

git add remota origine [email protected]: yourname/yourrepo

trazione + spinta = FISSO

Problemi correlati