2012-05-24 10 views
14

Ich versuche, eine Zusammenführung Squash von einem devel-Zweig in den Master zu tun.rückgängig machen git merge nach merge.renameLimit Warnung plus Konflikte

stefanos-imac:trunk borini$ git merge --squash devel 
CONFLICT (content): Merge conflict in test1 
warning: inexact rename detection was skipped due to too many files. 
warning: you may want to set your merge.renamelimit variable to at least 2224 and retry the command. 
Squash commit -- not updating HEAD 
Automatic merge failed; fix conflicts and then commit the result. 

gerecht genug.

stefanos-imac:trunk borini$ git config merge.renameLimit 999999 

Dann versuche ich die Zusammenführung rückgängig machen und wiederherstellen es mit dem höheren Limit

stefanos-imac:trunk borini$ git merge --abort 
fatal: There is no merge to abort (MERGE_HEAD missing). 

Ok, vielleicht habe ich zu tun, wie sie sagt, und erneut aufrufen nur der Merge-Befehl

stefanos-imac:trunk borini$ git merge --squash devel 
fatal: 'merge' is not possible because you have unmerged files. 
Please, fix them up in the work tree, and then use 'git add/rm <file>' as 
appropriate to mark resolution and make a commit, or use 'git commit -a'. 

oh git, warum bist du so ein Idiot?

Mehr auf den Punkt, weiß jemand, wie man aus dieser Situation herauskommt?

Antwort

23

Em, git reset --hard origin/master?

4

git merge --abort wird auch den Trick tun. Ein bisschen schneller als den vollständigen Befehl git reset eingeben.

Abort funktioniert auch mit rebase und cherry-pick.

+3

dieser spezielle Fall zeigt eindeutig, dass merge --abort ist fehlgeschlagen, die ich selbst gesehen habe. Immer wieder traurig, abort zu sehen scheitern :( – Brian

7

Die moderne Art und Weise eine Zusammenführung rückgängig zu machen ist (aber das funktioniert nur, wenn MERGE_HEAD vorhanden ist):

git merge --abort 

Und das etwas ältere Art und Weise, die in diesem Fall arbeiten (MERGE_HEAD fehlt):

git reset --merge 

Die alten Schule Weg in akzeptierte Antwort beschrieben (Warnung: werden alle lokalen Änderungen verwerfen):

git reset --hard 

Beachten Sie, dass git merge --abort nur git reset --merge entspricht, vorausgesetzt, dass MERGE_HEAD vorhanden ist. Dies kann in der Git-Hilfe für den Zusammenführungsbefehl gelesen werden.

git merge --abort is equivalent to git reset --merge when MERGE_HEAD is present. 

Nach einer gescheiterten Zusammenführung, wenn es keine MERGE_HEAD ist, kann die gescheiterte Fusion mit git reset --merge aber nicht unbedingt mit git merge --abort rückgängig gemacht werden.

+1

git reset --merge, das klappt bei mir für den beschriebenen MERGE_HEAD fehlt. –