Frage

Ich habe einigen Konflikt nach einem git pull zu lösen.

$ 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.

So gegoogelt ich es ein wenig und fand Menschen mit git mergetool sagen. Aber hier ist, was ich 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

So bedeutet es, ich habe etwas installieren?

Was passiert, wenn ich einfach nur die Version von git pull alles überschreiben?

War es hilfreich?

Lösung

Sie brauchen nicht mergetool dafür. Es kann ziemlich leicht von Hand gelöst werden.

Ihr Konflikt ist, dass Ihre lokale Commits eine Datei, vision_problem_8.h hinzugefügt, dass ein Remote-commit auch durch einen Umbenennungs von vignette_generator_mashed.h erstellt. Wenn Sie laufen ls -l vision_problem_8.h* Sie wahrscheinlich mehrere Versionen dieser Datei sehen, die git hat für Sie aufbewahrt. Einer von ihnen wird dein sein, ein anderer von ihnen wird die Remote-Version sein. Sie können einen Editor oder was auch immer Werkzeuge, die Sie die widersprüchlichen Inhalte lösen gerne verwenden. Wenn Sie fertig sind, git add die betroffenen Dateien und verpflichten die Zusammenführung abzuschließen.

Wenn Sie nur die Remote-Commit-Version verwenden möchten, dann können Sie nur die Kopie verschieben, die Sie nicht auf die Stelle geschrieben hat und git add es.


In Bezug auf die merge-Tool, hat einen Blick auf git help mergetool. Im Grunde genommen, es wird versuchen, jede der enthaltenen Möglichkeiten ausgeführt wird, bis es eine findet, oder verwenden Sie eine explizit konfiguriert haben.

Andere Tipps

Ich glaube, Sie haben nur vergessen „-t“ -Schalter in der Befehlszeile. Nach git help Seite es steht für "-t, --tool =" so ist es, was man soll.

Versuchen:

git mergetool -t gvimdiff

Natürlich können Sie Ihr bevorzugtes Merge-Tool anstelle von mir gvimdiff verwenden, meld ist auch toll ...

Wenn Sie Ihren Druck aus einem Unterverzeichnis Ihres Projektes ausgeführt, git wird die Zusammenführung für die ganze Projekt. sehen kann jedoch mergetool nur (und Zusammenführen von Dateien) in oder unter dem Arbeitsverzeichnis. Also, wenn dieses Szenario auftritt, stellen Sie sicher, dass Sie versuchen, Ihre Konfliktlösung aus dem Top-Level-Verzeichnis in Ihrem Projekt auszuführen.

Was passiert, wenn ich einfach die Version von git pull will alles überschreiben? Wenn Sie nur wollen, dass Sie sollten verwenden:

 git fetch
 git reset --hard origin/your-branch-name
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top