it-swarm.com.de

Git Merge-Fehler

Ich habe einen Git-Zweig namens 9-sign-in-out Mit perfekt funktionierendem Code und möchte ihn zum Master machen. Ich bin derzeit in der Hauptniederlassung.

$ git branch
9-sign-in-out
* master

Ich versuche, in den Zweig 9-sign-in-out Zu wechseln, aber es erlaubt mir nicht:

$ git checkout 9-sign-in-out
app/helpers/application_helper.rb: needs merge
config/routes.rb: needs merge
error: you need to resolve your current index first

Irgendeine Idee, wie ich alle Master-Verzweigungsfehler ignorieren und die 9-sign-in-out - Verzweigung in eine Master-Verzweigung verwandeln kann? Vielleicht git rebase ? Aber ich möchte den Code im Zweig 9-sign-in-out Nicht verlieren.

241
Sayanee

Es lohnt sich zu verstehen, was diese Fehlermeldungen bedeuten - needs merge und error: you need to resolve your current index first gibt an, dass eine Zusammenführung fehlgeschlagen ist und dass in diesen Dateien Konflikte vorliegen. Wenn Sie entschieden haben, dass die Zusammenführung, die Sie versucht haben, immerhin eine schlechte Idee war, können Sie die Dinge mit den folgenden Schritten wieder normalisieren:

git reset --merge

Andernfalls sollten Sie jedoch diese Zusammenführungskonflikte lösen, wie im Git-Handbuch beschrieben .


Sobald Sie mit einer der beiden Techniken damit fertig sind, sollten Sie in der Lage sein, das 9-sign-in-out Ast. Das Problem beim Umbenennen Ihres 9-sign-in-out bis master, wie in wRARs Antwort vorgeschlagen, ist, dass, wenn Sie Ihren vorherigen Hauptzweig mit jemandem geteilt haben, dies Probleme für sie schafft, da wenn die Geschichte der beiden Da die Zweige divergieren, veröffentlichen Sie die neu geschriebene Geschichte.

Im Wesentlichen möchten Sie Ihren Zweig "Thema" zusammenführen. 9-sign-in-out in master, aber behalten Sie genau die Versionen der Dateien im Zweig topic. Sie können dies mit den folgenden Schritten tun:

# Switch to the topic branch:
git checkout 9-sign-in-out

# Create a merge commit, which looks as if it's merging in from master, but is
# actually discarding everything from the master branch and keeping everything
# from 9-sign-in-out:
git merge -s ours master

# Switch back to the master branch:
git checkout master

# Merge the topic branch into master - this should now be a fast-forward
# that leaves you with master exactly as 9-sign-in-out was:
git merge 9-sign-in-out
482
Mark Longair
git checkout -f 9-sign-in-out # change branch, discarding all local modifications
git branch -M master # rename the current branch to master, discarding current master
39
wRAR

wie in git status vorgeschlagen,

Unmerged paths:                                                                                                                                
(use "git add <file>..." to mark resolution)                                                                                                 

    both modified:   a.jl                                  
    both modified:   b.jl

Ich habe git add Verwendet, um das Zusammenführen zu beenden, dann funktioniert git checkout Einwandfrei.

5
Jingpeng Wu