git diff en la date?

Estoy acostumbrado a ejecutar una comparación de git que permitirá la comparación con las revoluciones git locales, como:

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

¿Es posible utilizar la date en su lugar? Y si es así, ¿cómo? Me gustaría poder insert en lugar del "110" en el ejemplo anterior, una date como "4 de diciembre de 2012".

 git diff HEAD '[email protected]{3 weeks ago}' -- some/file/path/file.ext 

Esta no es, estrictamente hablando, la revisión hecha hace tres semanas. En cambio, es la position que HEAD tenía tres semanas antes del presente. Pero probablemente sea lo suficientemente cerca para sus propósitos; será muy preciso si el HEAD la twig actual avanza de manera constante, como la mayoría tiende a hacer. Puede mejorar la precisión utilizando un nombre de twig en lugar de HEAD .

En lugar de una compensación desde el presente, también puede usar una date / hora, como [email protected]{1979-02-26 18:30:00} . Ver git help rev-parse .

Combinando la sugerencia de Jonathan Stray para usar git-rev-list --before de encontrar la revisión en una date dada y mostrar solo la twig actual en 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" -- "[email protected]" 

Llame a este script con una date y, opcionalmente, algunos nombres de file, por ejemplo

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

Lo que quieres debe ser esto.

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

Debes comparar con @{3 weeks ago} , no con [email protected]{3 weeks ago} .

¿Cuál es la diferencia?

Si estuvieras en otra sucursal hace 3 semanas, [email protected]{3 weeks ago} señalaría la CABEZA de la sucursal, por otro lado @{3 weeks ago} señalaría la CABEZA de la sucursal actual.

También puede nombrar explícitamente la twig.

 git diff HEAD '[email protected]{3 weeks ago}' -- some/file/path/file.ext