Ich bin wahrscheinlich in der Nähe des OP, als dies begann, und suche nach etwas Einfachem, mit dem ich git difftool mit vimdiff verwenden kann , um Änderungen an Dateien in meinem Repo ab einem bestimmten Commit zu überprüfen. Ich war nicht sehr glücklich mit Antworten , die ich finden war, so dass ich diese warf git inc remental rep Orter (gitincrep) Skript zusammen 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
Ohne Argumente aufgerufen, beginnt dies am Anfang des Repo-Verlaufs, andernfalls beginnt es mit dem von Ihnen angegebenen abgekürzten Commit-Hash und fährt mit der Gegenwart fort - Sie können jederzeit Strg-C drücken, um den Vorgang zu beenden. Alle Argumente nach dem ersten beschränken die Differenzberichte so, dass sie nur die Dateien enthalten, die unter diesen Argumenten aufgeführt sind (was meiner Meinung nach das OP wollte und ich würde es für alle außer winzigen Projekten empfehlen). Wenn Sie Änderungen an bestimmten Dateien überprüfen und von vorne beginnen möchten, müssen Sie eine leere Zeichenfolge 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 vimdiff- Läufe für jede geänderte Datei anzubieten (das ist git difftool- Verhalten, aber es funktioniert hier).
Dieser Ansatz ist wahrscheinlich ziemlich naiv, aber bei der Durchsicht vieler Lösungen hier und in einem verwandten Beitrag mussten viele neue Tools auf einem System installiert werden, auf das ich keinen Administratorzugriff habe, mit Schnittstellen, die ihre eigene Lernkurve hatten. Das obige Skript hat getan, was ich wollte, ohne mich damit zu befassen. Ich werde hier auf die vielen hervorragenden Vorschläge eingehen, wenn ich etwas Anspruchsvolleres brauche - aber ich denke, dies reagiert direkt auf das OP.