Wie löse ich einen Konflikt nach einem Git-Pull?

Lesezeit: 4 Minuten

Wie lose ich einen Konflikt nach einem Git Pull
Tim

Ich muss nach a einen Konflikt lösen git pull.

$ git pull
CONFLICT (rename/add): Renamed vignette_generator_mashed.h->vision_problem_8.h in 49423dd0d47abe6d839a783b5517bdfd200a202f. vision_problem_8.h added in HEAD
Added as vision_problem_8.h~HEAD_1 instead
Removed vignette_generator_cross_square.cc
Automatic merge failed; fix conflicts and then commit the result.

Also habe ich ein bisschen gegoogelt und Leute gefunden, die sagten, sie zu benutzen git mergetool. Aber hier ist, was ich bekommen habe:

$ git mergetool
merge tool candidates: meld kdiff3 tkdiff xxdiff meld gvimdiff emerge opendiff emerge vimdiff
No files need merging
$ git mergetool opendiff
merge tool candidates: meld kdiff3 tkdiff xxdiff meld gvimdiff emerge opendiff emerge vimdiff
opendiff: file not found

Bedeutet das, dass ich etwas installieren muss?

Was ist, wenn ich einfach die Version aus haben möchte git pull alles überschreiben?

  • Weitere Informationen finden Sie auch unter stackoverflow.com/questions/1064103/… (in Bezug auf die Art und Weise, wie Git Merge-Tools vorschlägt und sucht)

    – VonC

    17. September 2009 um 4:06 Uhr

  • Und Sie können ein Beispiel für die Installation/Einstellung von a sehen mergetool hier: stackoverflow.com/questions/825478/…

    – VonC

    17. September 09 um 4:09 Uhr

1644073746 319 Wie lose ich einen Konflikt nach einem Git Pull
Phil Müller

Dafür brauchst du kein Mergetool. Es kann ziemlich einfach manuell gelöst werden.

Ihr Konflikt besteht darin, dass Ihre lokalen Commits eine Datei hinzugefügt haben. vision_problem_8.hdass ein Remote-Commit auch erstellt wird, durch eine Umbenennung von vignette_generator_mashed.h. Wenn du läufst ls -l vision_problem_8.h* Sie werden wahrscheinlich mehrere Versionen dieser Datei sehen, die git für Sie aufbewahrt hat. Eines davon wird Ihnen gehören, ein anderes wird die Remote-Version sein. Sie können einen Editor oder andere Tools verwenden, um die widersprüchlichen Inhalte zu lösen. Wenn du fertig bist, git add die betroffenen Dateien und verpflichten Sie sich, die Zusammenführung abzuschließen.

Wenn Sie nur die Version des Remote-Commits verwenden möchten, können Sie einfach die Kopie, die Sie nicht geschrieben haben, an die richtige Stelle verschieben und git add es.


In Bezug auf die Zusammenführungswerkzeuge werfen Sie einen Blick auf git help mergetool. Grundsätzlich wird es versuchen, jede der enthaltenen Möglichkeiten auszuführen, bis es eine findet, oder eine verwenden, die Sie explizit konfiguriert haben.

  • Danke! Sie helfen mir, das Problem zu lösen. Darf ich noch fragen, was mit meinem Mergetool nicht stimmt? Danke und Grüße!

    – Tim

    16. September 2009 um 22:45 Uhr

  • Höchstwahrscheinlich haben Sie Ihr Mergetool nicht konfiguriert. Verwenden Sie git config –global mergetool.[tool].cmd = [command-line call] Sie können viele Diff-Tools wie kdiff3, tkdiff, xxdiff oder viele andere verwenden. Sehen gitguru.com/2009/02/22/integrating-git-with-a-visual-merge-tool

    – Cäsar

    16. September 2009 um 23:12 Uhr

1644073747 497 Wie lose ich einen Konflikt nach einem Git Pull
mano2a0c40

Ich glaube, Sie haben einfach den Schalter “-t” in Ihrer Befehlszeile vergessen. Laut Git-Hilfeseite steht es für “-t , –tool=”, also macht es das, was Sie beabsichtigt haben.

Versuchen:

git mergetool -t gvimdiff

Natürlich können Sie Ihr bevorzugtes Merge-Tool anstelle von meinem verwenden gvimdiff, meld ist auch großartig …

  • Dies wäre eine bessere Antwort, wenn es eine Erklärung dafür gäbe, was der Schalter ist -t tatsächlich tut, und warum es löst das Problem.

    – Steward

    7. Februar 18 um 11:39 Uhr

  • @Stewart Fertig. Danke für den Einblick!

    – mano2a0c40

    9. Februar 18 um 0:58 Uhr

Wenn Sie Ihre Zusammenführung aus einem Unterverzeichnis Ihres Projekts ausführen, führt git die Zusammenführung für Ihr gesamtes Projekt aus. Mergetool kann jedoch nur Dateien in oder unterhalb des Arbeitsverzeichnisses sehen (und zusammenführen). Wenn dieses Szenario eintritt, stellen Sie also sicher, dass Sie versuchen, Ihre Konfliktlösung aus dem Verzeichnis der obersten Ebene in Ihrem Projekt auszuführen.

Wie lose ich einen Konflikt nach einem Git Pull
sichererJo

Was ist, wenn ich einfach möchte, dass die Version von git pull alles überschreibt?
Wenn Sie genau das wollen, sollten Sie Folgendes verwenden:

 git fetch
 git reset --hard origin/your-branch-name

Wenn Sie eine richtige Verzweigungsstrategie haben – auch bekannt als Features werden in Develop gemergt, kurz vor dem Merge rebasiert usw., meistens, wenn Sie a ausführen möchten git pull Auf einem Zweig möchten Sie im Grunde alle neuen Sachen vom Git-Server bekommen und später Ihre eigenen Sachen anwenden, was Git Lingua Franca in etwa so ist:

# put all my changes on the stash 
git stash 

# fully reset the current branch to the state it is on the server
git clean -d -x -f ; git reset HEAD --hard ; git pull --force

# apply your own changes 
git stash pop

Sie könnten Ihren aktuellen Status auch anstelle von Stash in einen tmp-Zweig legen … aber wenn es Konflikte gibt, müssten Sie sie schließlich manuell lösen …

.

784620cookie-checkWie löse ich einen Konflikt nach einem Git-Pull?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy