Je suis probablement sur la position de l'OP lorsque cela a commencé, à la recherche de quelque chose de simple qui me permettrait d'utiliser git difftool avec vimdiff pour examiner les modifications apportées aux fichiers de mon référentiel à partir d'un commit spécifique. Je n'étais pas trop satisfait des réponses que je trouvais, alors j'ai jeté ce script git inc remental rep orter (gitincrep) ensemble et cela m'a été utile:
#!/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
Appelé sans argument, cela commencera au début de l'historique du dépôt, sinon il commencera avec le hachage de validation abrégé que vous fournissez et passera au présent - vous pouvez Ctrl-C à tout moment pour quitter. Tout argument après le premier limitera les rapports de différence pour inclure uniquement les fichiers répertoriés parmi ces arguments (ce qui, je pense, est ce que l'OP voulait, et je le recommanderais pour tous les projets, sauf les plus petits). Si vous vérifiez les modifications apportées à des fichiers spécifiques et souhaitez commencer depuis le début, vous devrez fournir une chaîne vide pour arg1. Si vous n'êtes pas un utilisateur de vim, vous pouvez remplacer vimdiff par votre outil de diff préféré.
Le comportement consiste à afficher les commentaires de validation lorsque des modifications pertinentes sont trouvées et à commencer à proposer des exécutions vimdiff pour chaque fichier modifié (c'est le comportement de git difftool , mais cela fonctionne ici).
Cette approche est probablement assez naïve, mais en examinant de nombreuses solutions ici et dans un article connexe, beaucoup impliquaient l'installation de nouveaux outils sur un système où je n'ai pas d'accès administrateur, avec des interfaces qui avaient leur propre courbe d'apprentissage. Le script ci-dessus a fait ce que je voulais sans traiter de tout cela. J'examinerai les nombreuses excellentes suggestions ici lorsque j'ai besoin de quelque chose de plus sophistiqué - mais je pense que cela répond directement au PO.