So verwenden Sie Visual Studio Code als Standardeditor für Git MergeTool, einschließlich für die 3-Wege-Zusammenführung

Lesezeit: 2 Minuten

Benutzer-Avatar
Eric D. Johnson

Heute habe ich versucht, die zu verwenden git mergetool an der Windows-Eingabeaufforderung und stellte fest, dass es standardmäßig verwendet wurde Vimwas cool ist, aber ich würde es vorziehen VS-Code.

Wie kann ich haben Visual Studio-Code als meine GUI zur Behandlung von Zusammenführungskonflikten (oder sogar als Vergleichstool) für Git fungieren?

Ist eine Einrichtung möglich VS-Code Bildmaterial für a dreifache Zusammenführung?

Benutzer-Avatar
Eric D. Johnson

Aktualisieren: Ab Visual Studio-Code 1.70 Drei-Wege-Merge mit Verbesserungen wurden hinzugefügt. Bilder und weitere Erklärungen stehen zur Verfügung, falls es dich interessiert 😉.

Ab Visual Studio-Code 1.13 Besser zusammenführen wurde in den Kern von Visual Studio Code integriert.

Der Weg, sie miteinander zu verdrahten, besteht darin, Ihre zu modifizieren .gitconfig und du hast zwei Optionen.

  1. Um dies mit Befehlszeileneinträgen zu tun, geben Sie Folgendes ein: (Hinweis: Wenn Sie die Windows-Eingabeaufforderung verwenden, ersetzen Sie ' mit ". Danke an Iztok Delfin und e4rache für die Hilfe bei der Klärung.)

    1. git config --global merge.tool vscode
    2. git config --global mergetool.vscode.cmd 'code --wait --merge $REMOTE $LOCAL $BASE $MERGED'
    3. git config --global diff.tool vscode
    4. git config --global difftool.vscode.cmd 'code --wait --diff $LOCAL $REMOTE'
  2. Um dies zu tun, fügen Sie eine Zeile in die ein .gitconfig mit Visual Studio-Code.

    • Laufen git config --global core.editor 'code --wait' von der Kommandozeile.

    • Von hier aus können Sie den Befehl eingeben git config --global -e. Sie möchten den Code in den “Extra Block” unten einfügen.

        [user]
            name = EricDJohnson
            email = [email protected]
        [gui]
            recentrepo = E:/src/gitlab/App-Custom/Some-App
        # Comment: You just added this via 'git config --global core.editor "code --wait"'
        [core]
            editor = code --wait
        # Comment: Start of "Extra Block"
        # Comment: This is to unlock Visual Studio Code as your Git diff and Git merge tool
        [merge]
            tool = vscode
        [mergetool "vscode"]
        # Comment: Original way before three-way merge shown commented out
        #    cmd = code --wait $MERGED
        # Comment: For "Three-way merge"
            cmd = code --wait --merge $REMOTE $LOCAL $BASE $MERGED
        [diff]
            tool = vscode
        [difftool "vscode"]
            cmd = code --wait --diff $LOCAL $REMOTE
        # Comment: End of "Extra Block"
      

Jetzt aus Ihrem Git-Verzeichnis mit einem Konfliktlauf git mergetool und tada, Sie haben Visual Studio Code, der Ihnen hilft, den Zusammenführungskonflikt zu bewältigen! (Stellen Sie einfach sicher, dass Speichern Sie Ihre Datei vor dem Schließen von Visual Studio Code.)

Akzeptieren Sie eingehende Änderungen?

Weitere Informationen zum Starten code Schauen Sie in der Befehlszeile hinein diese Dokumentation.

Weitere Informationen unter git mergetool Kasse diese Dokumentation.

  • Ermöglicht Ihnen diese Integration von Better Merge, zu akzeptieren und auszuwählen, welcher Teil zusammengeführt werden soll? Oder müssen Sie die zusätzlichen Kommentare des Konflikts gerne noch von Hand entfernen <<<< HEAD und >>>> develop?

    – Ghikodierung

    29. August 2017 um 19:22 Uhr

  • Es gibt eine Zeile über <<<< Head, die eingefügt wird, die die Optionen auflistet: "Accept Current Change | Accept Incoming Change | Accept Both Changes | Compare Changes" und ich glaube, es fügt dies in jeden Abschnitt der erkannten Änderungen in der Datei ein . Aber innerhalb eines Abschnitts, wenn Sie ein bisschen davon und ein bisschen von dem manuell zusammenführen möchten, würden Sie diese Änderung meiner Meinung nach in Ihrem Lokal vornehmen und dann mit der Option "Aktuelle Änderung akzeptieren" fortfahren. Der Arbeitsablauf lässt Sie also einen Schritt zurückgehen, um einen Schritt nach vorne zu machen. Wenn andere dies anders lösen, posten Sie bitte hier, um uns zu informieren

    – Eric D.Johnson

    30. August 2017 um 20:03 Uhr

  • Oh, ich sehe es jetzt in Ihrem Druckbildschirm, sehr schön. Vielen Dank für die Erklärung und die Vorgehensweise. Werde es gerne verwenden, wenn Konflikte das nächste Mal im Weg stehen 🙂

    – Ghikodierung

    30. August 2017 um 23:31 Uhr

  • Ich bekomme den Fehler unknown tool: vscode… Ich bin mir ziemlich sicher, dass Sie VsCode von der Befehlszeile aus aufrufen müssen code Anstatt von vscode

    – Kellen Stuart

    5. September 2018 um 16:02 Uhr

  • Auch das funktioniert bei mir nicht. Es öffnet einfach VsCode und es werden nie Dateien aufgerufen

    – Kellen Stuart

    2. Oktober 2018 um 22:35 Uhr

Benutzer-Avatar
e4rache

Ich musste die doppelten Anführungszeichen durch einfache Anführungszeichen ersetzen:

  git config --global difftool.vscode.cmd 'code --wait --diff $LOCAL $REMOTE'

damit es richtig funktioniert (mit doppelten Anführungszeichen werden $LOCAL und $REMOTE durch ihre Werte ersetzt).

Dies ist erforderlich, wenn Sie verwenden GitBash für Windows anstelle der Windows-Eingabeaufforderung.

  • Nicht für mich. Ich habe das gerade unter Windows mit der Eingabeaufforderung gemacht. Vielleicht verwendest du etwas anderes? Wenn ja, schlage ich vor, hinzuzufügen, welche Umgebung Sie verwenden, damit andere mit derselben Umgebung wissen, dass sie diese Änderung vornehmen müssen.

    – Todesengel

    20. August 2018 um 21:04 Uhr

  • @e4rache und @Iztok-Delfin, was Sie hier aufgelistet haben, ist hilfreicher Inhalt, aber Sie haben es versehentlich zu einer Antwort gemacht, obwohl es sich wirklich um einen Kommentar handelt. Ich bin mir sicher, dass Sie in Schwierigkeiten geraten sind, weil Sie nicht die 50 Punkte auf SO hatten, um Kommentare abzugeben, was eine Art Site-Workflow-Problem ist, das vielleicht untersucht werden sollte. Wie auch immer, danke für deinen Beitrag, und ich habe deinen Tipp in meiner Antwort oben hinzugefügt. Vielen Dank, dass Sie denen helfen, die später kommen und Git Bash verwenden :^)

    – Eric D.Johnson

    23. August 2018 um 21:12 Uhr


  • @eric-d-johnson Ich wollte unbedingt einen Kommentar abgeben, anstatt zu antworten. (Entschuldigung, ich bin neu auf dieser Seite) und übrigens habe ich Bash unter Linux verwendet. Gibt es eine Möglichkeit, diese Antwort in einen Kommentar umzuwandeln?

    – e4rache

    4. September 2018 um 12:34 Uhr

  • @e4rache Ich kenne keine Möglichkeit, daraus einen Kommentar zu machen, aber vielleicht sieht das ein Moderator und gibt uns ein paar Tipps (Hinweis, Hinweis). Wenn Sie die 50 Punkte hätten, könnten Sie die akzeptierte Antwort kommentieren und diese löschen. Wenn Sie also ein SO-Rockstar mit Tonnen von Punkten werden, können Sie hierher zurückkehren und alles erledigen, was Sie glücklich macht und zurückbringt schöne Erinnerungen daran, wie alles begann.

    – Eric D.Johnson

    5. September 2018 um 18:29 Uhr

  • @mohamedghonemi Gutes Feedback. Ich habe die Erklärung oben für macOS und Linux jetzt aktualisiert, um daran zu denken, einfache Anführungszeichen zu verwenden ('s).

    – Eric D.Johnson

    16. Januar 2020 um 20:30 Uhr


Benutzer-Avatar
mvd

Zusätzlich zu der hervorragenden vorhandenen Antwort sollten Sie VS Code in einem neuen Fenster öffnen, indem Sie hinzufügen -n zur Kommandozeile.

Also dein git config --global --edit sieht ungefähr so ​​aus.

[merge]
        tool = vscode
[mergetool "vscode"]
        cmd = code --new-window --wait $MERGED
[diff]
        tool = vscode
[difftool "vscode"]
        cmd = code --new-window --wait --diff $LOCAL $REMOTE                                                    

  • Ich habe diese Einstellungen verwendet, aber wenn ich es tue git diff commit_id1 commit_id2, wird kein VS-Code-Editor-Fenster angezeigt. Es ist immer noch standardmäßig das Terminal. Verwende ich den falschen Befehl?

    – Benutzer5965026

    10. Dezember 2021 um 13:33 Uhr

  • @ user5965026 hast du es versucht git diftool Anstatt von git diff?

    – mvd

    13. Dezember 2021 um 15:29 Uhr

  • Hinweis: verwenden cmd = code --wait --merge $REMOTE $LOCAL $BASE $MERGED wenn Sie VSCode 1.7+ haben und eine Drei-Wege-Merge-UI wünschen.

    – RTD

    18. August um 10:23 Uhr

Mit Hilfe des Handbuchs finden Sie ein interessantes Argument:

git difftool --help 
-x <command>, --extcmd=<command>
       Specify a custom command for viewing diffs.  git-difftool ignores the configured defaults and runs $command $LOCAL $REMOTE when this option is specified.
       Additionally, $BASE is set in the environment.

Mit diesen Informationen können Sie einfach den folgenden Befehl verwenden, ohne die Git-Konfiguration zu berühren:

git difftool -x "code --wait --diff" 

Ähnliche Frage hier

Benutzer-Avatar
Daniel B

Falls jemand es in Visual Studio lösen möchte, wäre eine andere Möglichkeit, dies über Visual Studio zu tun: Team Explorer -> Klicken Sie auf das Home-Symbol => Schaltfläche Einstellungen => Erweitern Sie den Git-Abschnitt => Klicken Sie auf Globale Einstellungen

Geben Sie hier die Bildbeschreibung ein
Geben Sie hier die Bildbeschreibung ein
Geben Sie hier die Bildbeschreibung ein

  • Visual Studio ist nicht gleichbedeutend mit Visual Studio Code. Die Art und Weise, wie solche Einstellungen vorgenommen werden, ist sehr unterschiedlich. Siehe stackoverflow.com/a/33798601 für die Unterschiede

    – jwd630

    18. Januar 2020 um 21:00 Uhr


  • @ jwd630 Ich weiß, dass VS-Code anders ist als VS. Ich hatte dieses Problem in VS, konnte aber keine Lösung dafür finden, also dachte ich, es wäre besser, es zu posten, falls jemand dieses Problem hat. Keine Notwendigkeit, abzustimmen.

    – Daniel B

    18. Januar 2020 um 21:07 Uhr

  • Dies ist eine Antwort auf eine völlig andere Frage für ein anderes Produkt.

    – Jörg W Mittag

    12. Juni 2021 um 9:46 Uhr

  • Visual Studio ist nicht gleichbedeutend mit Visual Studio Code. Die Art und Weise, wie solche Einstellungen vorgenommen werden, ist sehr unterschiedlich. Siehe stackoverflow.com/a/33798601 für die Unterschiede

    – jwd630

    18. Januar 2020 um 21:00 Uhr


  • @ jwd630 Ich weiß, dass VS-Code anders ist als VS. Ich hatte dieses Problem in VS, konnte aber keine Lösung dafür finden, also dachte ich, es wäre besser, es zu posten, falls jemand dieses Problem hat. Keine Notwendigkeit, abzustimmen.

    – Daniel B

    18. Januar 2020 um 21:07 Uhr

  • Dies ist eine Antwort auf eine völlig andere Frage für ein anderes Produkt.

    – Jörg W Mittag

    12. Juni 2021 um 9:46 Uhr

1325630cookie-checkSo verwenden Sie Visual Studio Code als Standardeditor für Git MergeTool, einschließlich für die 3-Wege-Zusammenführung

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

Privacy policy