3807 Stimmen

Sehen Sie sich die Änderungshistorie einer Datei unter Verwendung der Git-Versionierung an

Wie kann ich die Historie einer individuellen Datei mit vollständigen Details darüber, was geändert wurde, anzeigen?

git log -- [filename] zeigt mir die Commit-Historie einer Datei, aber wie kann ich den Dateiinhalt sehen, der geändert wurde?

6 Stimmen

Der obenstehende Link (veröffentlicht von Chris) ist nicht mehr gültig. Dieser Link funktioniert heute: git-scm.com/book/en/v2

2 Stimmen

@chris: Welchen Link meinst du? In einem mittlerweile gelöschten Kommentar?

5voto

user3885927 Punkte 3155

Wenn Sie TortoiseGit verwenden, sollten Sie mit der rechten Maustaste auf die Datei klicken und TortoiseGit --> Protokoll anzeigen auswählen können. Stellen Sie sicher, dass im daraufhin erscheinenden Fenster:

  • Die Option "Gesamtes Projekt anzeigen" nicht ausgewählt ist.

  • Die Option "Alle Zweige" ausgewählt ist.

0 Stimmen

TortoiseGit (und auch Eclipse Git) verpasst auf irgendeine Weise Revisionen der ausgewählten Datei, darauf solltest du dich nicht verlassen!

0 Stimmen

@NoamManos, ich bin auf dieses Problem nicht gestoßen, daher kann ich nicht bestätigen, ob deine Aussage korrekt ist.

0 Stimmen

Mein Fehler, es passiert nur in Eclipse, aber in TortoiseGit können Sie alle Versionen einer Datei sehen, wenn Sie "Alle Projekte anzeigen" abwählen und "Alle Branches" auswählen (falls die Datei in einem anderen Branch committet wurde, bevor sie zum Hauptbranch gemergt wurde). Ich werde deine Antwort aktualisieren.

4voto

Lukasz Czerwinski Punkte 11167

git diff -U gibt Ihnen einen vereinheitlichten Unterschied.

Es sollte rot und grün gefärbt sein. Wenn nicht, führen Sie zuerst aus: git config color.ui auto.

2voto

AhHatem Punkte 1367

Wenn Sie Eclipse mit dem Git-Plugin verwenden, verfügt es über eine ausgezeichnete Vergleichsansicht mit Verlauf. Klicken Sie mit der rechten Maustaste auf die Datei und wählen Sie "Vergleichen mit" "Verlauf".

0 Stimmen

Das wird Ihnen jedoch nicht ermöglichen, eine gelöschte Datei zu finden.

0 Stimmen

Das Vergleichen von zwei Versionen einer Datei unterscheidet sich vom Anzeigen der Änderungshistorie einer Datei.

1voto

oracleif Punkte 21

Ich bin wahrscheinlich ungefähr dort, wo der OP war, als das begann, und suche nach etwas Einfachem, das es mir ermöglichen würde, git difftool mit vimdiff zu verwenden, um Änderungen an Dateien in meinem Repo ab einem bestimmten Commit zu überprüfen. Ich war mit den Antworten, die ich gefunden habe, nicht zufrieden, also habe ich dieses git incremental reporter (gitincrep) Skript erstellt und es war nützlich für mich:

#!/usr/bin/env bash

STARTWITH="${1:-}"
shift 1

DFILES=( "$@" )

RunDiff()
{
        GIT1=$1
        GIT2=$2
        shift 2

        if [ "$(git diff $GIT1 $GIT2 "$@")" ]
        then
                git log ${GIT1}..${GIT2}
                git difftool --tool=vimdiff $GIT1 $GIT2 "$@"
        fi
}

OLDVERS=""
RUNDIFF=""

for NEWVERS in $(git log --format=format:%h  --reverse)
do
        if [ "$RUNDIFF" ]
        then
                RunDiff $OLDVERS $NEWVERS "${DFILES[@]}"
        elif [ "$OLDVERS" ]
        then
                if [ "$NEWVERS" = "${STARTWITH:=${NEWVERS}}" ]
                then
                        RUNDIFF=true
                        RunDiff $OLDVERS $NEWVERS "${DFILES[@]}"
                fi
        fi
        OLDVERS=$NEWVERS
done

Wenn ohne Argumente aufgerufen, beginnt dies mit dem Anfang der Repo-History, sonst beginnt es mit dem gekürzten Commit-Hash, den Sie angeben, und geht bis zur Gegenwart - Sie können jederzeit mit Strg-C abbrechen. Alle Argumente nach dem ersten begrenzen die Unterschiedsberichte nur auf die angegebenen Dateien (was meiner Meinung nach das ist, was der OP wollte, und ich würde es für alle außer kleinen Projekten empfehlen). Wenn Sie Änderungen an bestimmten Dateien prüfen und von vorne beginnen möchten, müssen Sie einen leeren String für arg1 angeben. Wenn Sie kein vim-Benutzer sind, können Sie vimdiff durch Ihr bevorzugtes Diff-Tool ersetzen.

Das Verhalten besteht darin, die Commit-Kommentare auszugeben, wenn relevante Änderungen gefunden werden, und für jede geänderte Datei vimdiff Läufe anzubieten (das ist git difftool Verhalten, aber es funktioniert hier).

Diese Herangehensweise ist wahrscheinlich ziemlich naiv, aber nachdem ich viele der Lösungen hier und in einem verwandten Beitrag durchgesehen habe, die meisten beinhalteten das Installieren neuer Tools auf einem System, für das ich keine Admin-Zugriff habe, mit Oberflächen, die ihre eigene Lernkurve hatten. Das obige Skript hat gemacht, was ich wollte, ohne sich damit auseinandersetzen zu müssen. Ich werde die vielen ausgezeichneten Vorschläge hier prüfen, wenn ich etwas Anspruchsvolleres brauche - aber ich denke, das ist direkt auf den OP zugeschnitten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X