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?
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?
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.
TortoiseGit (und auch Eclipse Git) verpasst auf irgendeine Weise Revisionen der ausgewählten Datei, darauf solltest du dich nicht verlassen!
@NoamManos, ich bin auf dieses Problem nicht gestoßen, daher kann ich nicht bestätigen, ob deine Aussage korrekt ist.
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.
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 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.
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?