77 votes

git diff à la date ?

Je suis habitué à exécuter une comparaison git qui permettra une comparaison avec les revs git locaux comme :

 git diff HEAD HEAD~110 -- some/file/path/file.ext

Est-il possible d'utiliser la date à la place ? Et si oui, comment ? J'aimerais pouvoir insérer à la place du "110" dans l'exemple ci-dessus, une date telle que "4 déc 2012".

26voto

Sangdol Points 3374

Ce que vous voulez doit être ceci.

 git diff HEAD '@{3 weeks ago}' -- some/file/path/file.ext

Vous devez comparer avec @{3 weeks ago} , et non HEAD@{3 weeks ago} .

Quelle est la difference?

Si vous étiez sur une autre branche il y a 3 semaines, HEAD@{3 weeks ago} pointerait le HEAD de la branche, par contre @{3 weeks ago} pointerait le HEAD de la branche actuelle.

Vous pouvez également nommer explicitement la branche.

 git diff HEAD 'master@{3 weeks ago}' -- some/file/path/file.ext

11voto

Gilles Points 37537

Combinant la suggestion de Jonathan Stray d'utiliser git-rev-list --before pour trouver la révision à une date donnée et Afficher uniquement la branche actuelle dans Git :

 #!/bin/sh
if [ $# -eq 0 ] || [ "$1" = "--help" ]; then
  cat <<EOF
Usage: $0 DATE FILE...
git diff on FILE... since the specified DATE on the current branch.
EOF
  exit
fi

branch1=$(git rev-parse --abbrev-ref HEAD)
revision1=$(git rev-list -1 --before="$1" "$branch1")
shift

revision2=HEAD

git diff "$revision1" "$revision2" -- "$@"

Appelez ce script avec une date et éventuellement des noms de fichiers, par exemple

 git-diff-since yesterday
git-diff-since '4 Dec 2012' some/file/path/file.ext

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X