Dans certains cas de figure très particuliers, il peut être utile de spécifier une date de commit personnalisée.
Par exemple, je viens de créer un dépôt GitHub contenant l’ensemble des versions stables de Magento 1.x.
Je voulais que les dates du dépôt suivent scrupuleusement celles des publications officielles de Magento afin de conserver une cohérence.
Logiquement, git utilise la date courante lorsqu’on effectue un commit !
Spécifier sa date de commit
Pour spécifier une date personnalisée de commit, on va utiliser 2 variables d’environnement utilisées en interne par git : GIT_AUTHOR_DATE et GIT_COMMITTER_DATE :
1 2 3 |
$ export GIT_AUTHOR_DATE="2016-10-11T06:06:51+01:00" $ export GIT_COMMITTER_DATE="2016-10-11T06:06:51+01:00" $ git commit |
Les dates fournies peuvent être au format RFC 2822 ou au format ISO 8601.
Modifier la date après le commit
Il est également possible de modifier la date après avoir effectué le commit (bien que ce ne soit généralement pas recommandé).
1 2 3 4 5 6 |
$ git filter-branch --env-filter \ 'if [ $GIT_COMMIT = 10f1c59baa346b8bbccc49e9534dd81f309c7b35 ] then export GIT_AUTHOR_DATE="2016-01-01T00:00:00+00:00" export GIT_COMMITTER_DATE="2016-01-01T00:00:00+00:00" fi' |
La sortie devrait ressembler à quelque chose comme :
1 2 |
Rewrite 10f1c59baa346b8bbccc49e9534dd81f309c7b35 (1/3) (0 seconds passed, remainRewrite def5ea4640911d22e5658f3ede0429a6a5f214e2 (2/3) (1 seconds passed, remainRewrite 1007f75ba852d340eb7c494c153ef4f04714800c (2/3) (1 seconds passed, remaining 0 predicted) Ref 'refs/heads/master' was rewritten |
Il faut maintenant forcer le push sur le dépôt distant
1 2 3 4 5 6 7 8 9 |
$ git push origin HEAD --force Counting objects: 9, done. Delta compression using up to 8 threads. Compressing objects: 100% (7/7), done. Writing objects: 100% (9/9), 777 bytes | 0 bytes/s, done. Total 9 (delta 1), reused 0 (delta 0) remote: Resolving deltas: 100% (1/1), done. To https://github.com/lucalbert/test.git + 1007f75...945c744 HEAD -> master (forced update) |