2016-10-18 2 views
0

Hat der Master Änderungen vor dem lokalen Zweig B1 (Zweig erstellt vom alten Master aus vorherigem Release), wie kann ich dann Änderungen vom Master (letzter Master) zum lokalen Zweig B1 zusammenführen (aus dem vorherigen Master), der auch lokale Änderungen aufweist, die sich vom letzten Master bei gleichen und/oder anderen Dateien unterscheiden.git merging vom Master zum lokalen Zweig

>> git checkout B1 
>> git merge master 

Fehler:

CONFLICT (content): Merge conflict in views/index.html 
Auto-merging scripts/services/eService.js 
CONFLICT (content): Merge conflict in scripts/services/eScreenService.js 
Auto-merging scripts/directives/confirmService.js 
Auto-merging scripts/controllers/submitFormController.js 
CONFLICT (content): Merge conflict in scripts/controllers/submitFormController.js 
Automatic merge failed; fix conflicts and then commit the result. 

Ich muss verstehen, wie Sie den Code Konflikt in dieser Situation umgehen? Wie kann ich die merge Änderungen in der Datei wieder zurück (Undo >>>>>>> master und/oder <<<<<<< HEAD Kommentare aus der Datei git revert HEAD{X} nicht helfen)

+2

Es ist nicht klar, was Sie hier tun soll. Ein Zusammenführungskonflikt (Nomen) tritt auf, wenn sich Ihre Änderungen seit der Basisversion mit ihren Änderungen widersprechen (Verb). Zum Beispiel haben Sie vielleicht gesagt "Malen Sie diese Box rot" und sie sagten "Malen Sie diese Box blau". Git sagt Ihnen, dass diese nicht kompatibel sind, indem Sie die Konfliktbereiche markieren. Es liegt an Ihnen, herauszufinden, ob es rot, blau, violett oder sogar grün sein sollte. Sie sollten also die Dateien bearbeiten, die markierten Konflikte finden, herausfinden, was * richtig * ist und die widersprüchlichen Abschnitte durch korrekte Ergebnisse ersetzen . – torek

Antwort

1

git-revert Setzen Sie einige vorhandene Commits zurück, keine Änderungen vom HEAD Commit. Git Revert

und Sie haben noch nichts nach Konflikten begangen.

git status ist dein bester Freund. es kann dich jede Sekunde führen.

git status 

You have unmerged paths. 
(fix conflicts and run "git commit") 
(use "git merge --abort" to abort the merge) 

geht für

git merge --abort 

dieser wird die Änderungen wieder zurück.

EDIT

können Sie

verwenden
git checkout --ours file 

Änderungen Ihrer aktuellen Zweig zu halten und andere zu entfernen. Verwenden Sie - theirs für umgekehrt.

+0

Danke, dies würde nur helfen, zurück zu ursprünglichen lokalen Zweig Zustand, aber nicht, wie der Zusammenführungskonflikt zu lösen. –

+1

Das war deine Frage. 'Wie kann ich die Zusammenführungsänderungen in der Datei rückgängig machen, die Sie mit dem obigen Befehl machen können. Git löst keine Konflikte für Sie, wenn es in einer Datei auftritt. Es gibt Ihnen freie Hand, um Ihre Datei zu bearbeiten und dann 'git add' und' git commit' –

1

Sie einen Schritt zurück kann: git merge --abort

Oder Sie können die Konflikte lösen manuell: git mergetool (und dann Ihre Änderungen festschreiben)

Aber Sie mögen vielleicht eine andere Option: git rebase wird Ihre Änderungen wegnehmen, schnell den Upstream-Zweig zu Ihrem lokalen Zweig weiterleiten und dann Ihre Änderungen erneut anwenden.

Jeder Weg ist für eine andere Situation, also denke ein wenig darüber nach, was du erreichen willst.

+0

'Schnellvorlauf des Upstream-Zweigs zu Ihrem lokalen Zweig' - bedeutet Upstream-Zweig 'Remote-Zweig'? Wenn das der Fall ist, wie dauert es Update vom letzten Master? –

+0

"Upstream-Zweig" bedeutet technisch jeden Zweig, den Sie wählen. (Holen Sie es, wenn es remote ist.) –

0

Sie tun können (wenn Sie in der Branche sind):

git fetch 
git rebase origin/master 
Verwandte Themen