Je recherche mes journaux git et constate que AuthorDate et CommitDate sont légèrement différents pour certains de mes commits:
commit 3a5912f90dc5227f308e99f95152fbee2301c59a
Author: <hidden>
AuthorDate: Fri Jun 15 10:57:22 2012 +0800
Commit: <hidden>
CommitDate: Fri Jun 15 11:14:37 2012 +0800
L'auteur et le Commit sont le même moi.
Comment cela peut-il arriver? Je suis perplexe pendant des jours.
Il y en a d'autres (se produit dans 17 commits sur 341):
+------------------------------+-------------------------------+
| from_unixtime(authored_date) | from_unixtime(committed_date) |
+------------------------------+-------------------------------+
| 2012-06-15 10:57:22 | 2012-06-15 11:14:37 |
| 2012-06-15 14:39:54 | 2012-06-15 14:48:57 |
| 2012-06-19 12:28:21 | 2012-06-19 12:29:41 |
| 2012-06-21 18:16:25 | 2012-06-21 18:28:48 |
| 2012-06-26 17:30:54 | 2012-06-26 17:33:55 |
| 2012-07-13 11:41:43 | 2012-07-13 11:42:17 |
| 2012-07-13 11:56:02 | 2012-07-13 12:13:22 |
| 2012-07-13 12:05:09 | 2012-07-13 12:12:24 |
| 2012-07-12 18:38:49 | 2012-07-13 12:26:35 |
| 2012-07-13 11:00:47 | 2012-07-13 12:25:15 |
| 2012-07-16 14:10:54 | 2012-07-16 14:15:01 |
| 2012-07-13 12:56:51 | 2012-07-16 13:49:48 |
| 2012-07-16 14:10:54 | 2012-07-16 14:19:46 |
| 2012-07-24 16:05:05 | 2012-07-24 16:05:48 |
| 2012-07-24 17:42:58 | 2012-07-24 17:43:33 |
| 2012-07-24 17:42:58 | 2012-07-24 17:45:18 |
| 2012-07-26 16:55:40 | 2012-07-26 16:55:53 |
+------------------------------+-------------------------------+
git log
par défaut, affiche uniquement la date de validation de l'auteur. Mais si vous utilisez--since
,--until
,--before
,--after
, les dates relatives, les utilisations git les committers engagent ce jour à la place!git log --since="yesterday"
peut ne pas afficher les résultats attendus si l' auteur engage la date est différente de la Committer date de commettre.git --squash merge
est une stratégie de fusion assez courante qui peut être configurée (bien qu'elle ne semble pas être utilisée ici, elle est évoquée à titre d'exemple). De plus, si git est utilisé via un IDE ou une interface graphique git, il est possible que la configuration / fonctionnalité ne soit pas présente dans la CLI. Cela peut valoir la peine de vérifier à nouveau ce que votre fusion est configurée pour faire dans l'environnement dansRéponses:
La date de l'auteur indique la date initiale de cette validation (c'est-à-dire lorsque vous avez terminé le
git commit
). Selon la documentation degit commit
, la date de l'auteur peut être remplacée à l'aide du--date
commutateur.La date de validation est modifiée à chaque fois que la validation est modifiée, par exemple lors du rebasage de la branche où se trouve la validation sur une autre branche ( plus ).
La même chose pourrait arriver si vous effectuez votre commit et envoyez votre patch à un autre afin d'appliquer le patch dans un autre repo: la date de l'auteur sera la date de votre
git commit
, la date de commit sera fixée à cette date lorsque le patch sera appliqué dans l'autre repo.Si vous envoyez le patch à deux collègues, il y aura une date d'auteur mais deux dates de validation différentes.
Ceci est également mentionné dans le livre Git :
la source
git show -s --format="commit %cD author %aD" HEAD
, il semblerait que, par exemple, modifier le message de validation avec lesgit gui
deux mises à jour, maisgit commit --amend
ne met à jour que la date de validation . peu intuitif.La date de l'auteur d'un commit est préservée lors du rebase / cherry-pick, etc. Mais la date de commit est modifiée.
la source
git commit --amend
.