2013-09-03 13 views
31

Di solito, ho appena eseguitoGit impedisce spingendo dopo che modifica un commit

git add file 
git commit 
git push 

ma se modificare l'impegno prima spingendola (con git commit --amend), la prossima spinta viene a mancare con

hint: Updates were rejected because the tip of your current branch is behind 
hint: its remote counterpart. Integrate the remote changes (e.g. 
hint: 'git pull ...') before pushing again. 
hint: See the 'Note about fast-forwards' in 'git push --help' for details. 

Come posso lasciare che Git spinga le modifiche senza fondere i rami? Ho solo un ramo (master) e io sono l'unica persona che usa questo repository quindi perché sta dicendo questo?

git branch -a:

* master 
    remotes/origin/HEAD -> origin/master 
    remotes/origin/master 

EDIT: Utilizzando gitk HEAD @{u}, vedo che ho 2 rami, uno con l'originale commesso e un altro con il commit modificato.

+1

possibile duplicato di [Come posso inviare il commit modificato al repository git remoto?] (Http://stackoverflow.com/questions/253055/how-do-i-push-amended-commit-to-the-remote -git-repo) – Deebster

+0

@Deebster La domanda che hai collegato riguardava la modifica di un commit già trasferito al telecomando, sto modificando un commit che non è stato ancora spinto. – minerz029

+0

'Ho solo un ramo (master) e sono l'unica persona che usa questo repo' e' Vedo che ho 2 rami, uno con il commit originale e un altro con il commit modificato. È in conflitto, puoi per favore spiega cosa hai fatto esattamente –

risposta

45

Questo dovrebbe essere solo il caso se si sta per modificare una già spinto commesso. In genere non dovresti mai farlo mentre modifichi la cronologia pubblicata. Nel tuo caso, tuttavia, dovresti riuscire a scappare con push -f, che sovrascriverà il commit remoto con la tua revisione modificata.

+0

Non posso ringraziare abbastanza @joey, questo è stato il motivo esatto per cui ho perso gli ultimi minuti, e sì lo ha fatto risolvere il problema. –

6

si ha modificato il tirato commettere come nel

git pull origin master 
git commit -a --amend -m "..." 
git push 

è possibile risolvere il problema ripristinando il modificata commettere:

git reset --mixed origin/master 

e poi fare di nuovo come un vero e proprio pieno impegnano

+0

Cosa intendi?L'ho modificato prima di premere le modifiche – minerz029

7

Sì, non dovresti farlo (spingendo un commit, poi cambiandolo e provando a spingerlo di nuovo).

Invece, è possibile ripristinare Git al commit precedente senza modificare i file, quindi la creazione di un nuovo commit:

git reset --mixed origin/master 
git add . 
git commit -m "This is a new commit for what I originally planned to be an amendmend" 
git push origin master 

questo creerà un nuovo commit con i cambiamenti stavi per modificare.

+0

Ma ho eseguito 'git commit --amend' prima di eseguire' git push' in primo luogo – minerz029

+1

c'era qualche commit spinto nel telecomando, prima che si verificasse il problema? –

+0

Ho già spinto alcuni commit al telecomando – minerz029

Problemi correlati