281 votes

Comment faire un commit Git dans le passé ?

Je suis en train de tout convertir à Git pour mon usage personnel et j'ai trouvé d'anciennes versions d'un fichier déjà dans le dépôt. Comment puis-je le commiter dans l'historique dans l'ordre correct selon la "date de modification" du fichier afin d'avoir un historique précis du fichier ?

On m'a dit que quelque chose comme ça marcherait :

git filter-branch --env-filter="GIT_AUTHOR_DATE=... --index-filter "git commit path/to/file --date " --tag-name-filter cat -- --all

1 votes

Réponses courtes et simples : stackoverflow.com/a/34639957/2708266

58 votes

Je me demande si les personnes qui cherchent la réponse à cette question veulent simplement maintenir leur "série de contributions" sur GitHub de cette façon.

10 votes

@ZitRo oui. Et il suffit de mettre git commit --date="xxx day ago" -m "yyy" est suffisant à cet effet si quelqu'un se pose la question.

25voto

cps7 Points 456

Pour faire un commit qui ressemble à ce qui a été fait dans le passé, vous devez définir les deux paramètres suivants GIT_AUTHOR_DATE y GIT_COMMITTER_DATE :

GIT_AUTHOR_DATE=$(date -d'...') GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE" git commit -m '...'

donde date -d'...' peut être une date exacte comme 2019-01-01 12:00:00 ou relative comme 5 months ago 24 days ago .

Pour voir les deux dates dans le journal git, utilisez :

git log --pretty=fuller

Cela fonctionne également pour les commits de fusion :

GIT_AUTHOR_DATE=$(date -d'...') GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE" git merge <branchname> --no-ff

21voto

Manav Mehra Points 141

C'est une vieille question mais je suis tombé dessus récemment.

git commit --date='2021-01-01 12:12:00' -m "message" a fonctionné correctement et l'a vérifié sur GitHub .

19voto

JstRoRR Points 531

Dans mon cas, en utilisant l'option --date, mon processus git s'est écrasé. Peut-être que j'ai fait quelque chose de terrible. Et en conséquence, un fichier index.lock est apparu. J'ai donc supprimé manuellement les fichiers .lock du dossier .git et j'ai exécuté, pour tous les fichiers modifiés à commiter dans les dates passées et cela a fonctionné cette fois. Merci pour toutes ces réponses.

git commit --date="`date --date='2 day ago'`" -am "update"

5 votes

Ver commentaire ci-dessus sur git commit --date . De plus, votre exemple de message de validation devrait être modifié pour décourager les messages d'une seule ligne comme ceux-ci @JstRoRR

4 votes

Attention : git --date ne modifiera que le $GIT_AUTHOR_DATE ... donc, selon les circonstances, vous verrez la date actuelle attachée au commit ($GIT_COMMITTER_DATE).

5voto

rel1x Points 750

Ou utilisez simplement un fake-git-history pour le générer pour une plage de données spécifique.

2voto

dig Points 1622

Vous pouvez toujours changer une date sur votre ordinateur, faire un commit, puis changer la date en arrière et pousser.

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