Wie kann ich die Ausgabe von „git show“ in einem Diff-Viewer wie meld, kdiff3 usw. anzeigen?

Lesezeit: 3 Minuten

Benutzer-Avatar
Knöpfe840

Es gibt viele SO-Fragen, die zeigen, wie die Ausgabe von a angezeigt wird git diff Befehl in einem Diff-Viewer wie meld using git difftool oder andernfalls. Ich frage nicht nach git diff obwohl.

Ich möchte die Ausgabe von sehen git show <previous commit sha1> in einem Diff-Viewer wie meld. Wie kann ich das machen?

  • gitk, gitgund andere fallen mir ein…

    – Twalberg

    9. Juli 2013 um 21:40 Uhr

Sie können verwenden git difftool um ein einzelnes Commit anzuzeigen.

Angenommen, Sie möchten den Commit mit sha1 sehen abc123:

git difftool abc123~1 abc123

(~1 weist git an, zum vorherigen Commit zu wechseln, also abc123~1 ist das Commit davor abc123)

Wenn Sie dies regelmäßig verwenden, können Sie einen benutzerdefinierten Git-Befehl erstellen, um es einfacher zu machen:

  1. Erstellen Sie eine Datei namens git-showtool irgendwo auf deinem $PATH mit folgendem Inhalt:

    git difftool $1~1 $1
    
  2. Geben Sie dieser Datei Ausführungsberechtigungen:

    chmod +x ~/path/to/git-showtool
    
  3. Verwenden Sie den Befehl git showtool <sha1 or tag or ...>

  4. Profitieren.

  • Außerdem sollten Sie überprüfen, welchen Commit Sie sich ansehen und ob er viele geänderte Dateien enthält. weil meld nacheinander nacheinander geöffnet wird

    – Benutzer2291758

    19. Mai 2015 um 14:16 Uhr

  • Leider bekomme ich folgenden Fehler. Starten Sie ‘p4mergetool’ [Y/n]? Y /mingw64/libexec/git-core/git-mergetool–lib: eval: line 124: Unerwartetes EOF beim Suchen nach passendem `”‘ /mingw64/libexec/git-core/git-mergetool–lib: eval: line 125: Syntaxfehler: Unerwartetes Dateiende

    – jpierson

    6. März 2017 um 16:19 Uhr

  • git show $commit ist nicht gleichbedeutend mit git difftool $commit~1 $commit wenn wir einen Merge-Commit überprüfen. git show präsentiert den Merge-Commit in einem speziellen Format, wie es von produziert wird git diff-tree --cc $commit. Sehen git-scm.com/docs/git-show

    – Abdel Rauf

    18. Juli 2018 um 5:52 Uhr


  • Du kannst den … benutzen ^ Eltern-Commits auch gerne machen git difftool abc123^ abc123. Bewerben Sie sich mehrmals, um den Baum höher zu steigen abc123^^^

    – jokul

    3. August 2018 um 14:57 Uhr

  • Jemand sollte dieses nette und einfache Tool mit Mainline-Git zusammenführen

    – Ericcurtin

    22. Oktober 2020 um 12:50 Uhr

Aufbauend auf der Antwort von Georgebrock können Sie in .gitconfig einen Alias ​​erstellen, etwa so:

showtool = "!showci () { rev=${1:-HEAD}; git difftool $rev~1 $rev; }; showci $1"

Dann kannst du es mit ausführen git showtool abc123 (ohne dafür ein separates Shell-Skript erstellen zu müssen). Wenn Sie die Revision weglassen, wird sie standardmäßig auf HEAD gesetzt.

  • Ich stimme zu, dass ein Git-Alias ​​wahrscheinlich besser wäre. Danke für den Vorschlag.

    – Knöpfe840

    15. Januar 2015 um 19:31 Uhr

  • Ich bevorzuge diese Lösung sehr 🙂 Und ich habe –dir-diff an den Befehl difftool übergeben, um es für mich noch bequemer zu machen.

    – Sturmreiter

    2. August 2017 um 7:58 Uhr

Übersetzen Sie den Vorschlag des Schützen für die weniger versierten Git, fügen Sie dies zu Ihrem Global hinzu .gitconfig Datei, in der sich befindet C:\Benutzer[user name] Wenn Sie ein Windows-Benutzer sind:

[alias]
    showtool = "!showci () { rev=${1:-HEAD}; git difftool $rev~1 $rev; }; showci $1"

oder Sie können den folgenden Befehl in der Get-Bash-Shell ausführen:

git config --global alias.showtool '!showci () { rev=${1:-HEAD}; git difftool $rev~1 $rev; }; showci $1'

was die Änderung an der vornehmen wird .gitconfig Datei für Sie.

Aufbauend auf der Antwort von Sagitarrian ist hier eine kleine Änderung für eine allgemeinere Rev-Syntax:

showtool = "!showci () { rev=$(git rev-parse \"${*:-HEAD}\"); git difftool $rev~1 $rev; }; showci"

ich benutze rev-parse um komplexe Drehzahlausdrücke transparent zuzulassen.

Ich habe die entfernt $1 am Ende, da der Alias ​​aufgerufen wird, gefolgt von den Argumenten; es bleibt unbemerkt, wenn es nur verwendet wird $1 aber bricht $* Verhalten.

Dies ermöglicht es, schöne Dinge zu tun, wie:

git showtool :/some nasty bug

Die Antwort von Geogrebrock ist in Ordnung, kann aber so verbessert werden:

commit=$1
shift
git difftool $commit~1 $commit $@

Legen Sie es in einer ausführbaren Datei (chmod +x) irgendwo in $PATH ab.

Jetzt können Sie zusätzliche Argumente übergeben, z. B. angeben, welche Dateien Sie sehen möchten (und andere ignorieren):

$ git showtool 6a40ec6ffb9338b0548aefab92fded1bffb1648a -- src-cmn/

Benutzer-Avatar
Florenz

Das git-showcommit Datei (ausführbar) im PATH sollte wie folgt aussehen:

#!/bin/bash

git difftool --dir-diff $1^..$1

dann kannst du das neue Tool einfach per aufrufen git showcommit HEAD oder git showcommit a5b26d5

1300430cookie-checkWie kann ich die Ausgabe von „git show“ in einem Diff-Viewer wie meld, kdiff3 usw. anzeigen?

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

Privacy policy