Est-il possible de changer la date de validation de ma validation à la date de l'auteur?
J'ai adapté quelques commits et maintenant les dates sont toujours les mêmes. Je veux le remettre aux anciennes dates (ou aux dates de l'auteur). Est-ce possible?
J'utilise Sourcetree donc j'ai la ligne de commande git mais je ne suis pas un pro dans ce domaine. Mon référentiel externe est bitbucket.
Depuis git 1.6.3 git rebase
A --committer-date-is-author-date
À cet effet.
git rebase --committer-date-is-author-date
Réponse originale:
Il n'y a pas de moyen facile de définir les dates de committer (modifier: mais voir "modifier 2" ci-dessous). Les dates de l'auteur sont faciles à ajuster (au moment de la validation) car --date
Vous permettra de spécifier chacune au fur et à mesure.
La variable d'environnement GIT_COMMITTER_DATE
Peut être utilisée pour forcer un horodatage différent au moment où vous effectuez la validation. Notez cependant que vous devrez ajuster cela pour chaque commit que vous "rejouez". Le nouveau commit résultant aura un SHA-1 différent (parce que vous y avez modifié quelques bits, à savoir le champ date du committer), ce qui signifie que vous devez refaire tous ses commits descendants.
C'est ce que fait git filter-branch
(Recréez certains, plusieurs ou tous les commits avec les modifications apportées en cours de route, en conservant un mappage des anciens ID SHA-1 aux nouveaux ID SHA-1 et en ajustant les parents des événements même). sinon, des copies de validation intactes afin que le "nouveau" DAG des nouveaux ID SHA-1 corresponde à l '"ancien" DAG de toutes les manières possibles, c'est-à-dire de toutes les manières, à l'exception des ID SHA-1 et de toute autre modification apportée par votre filtre (s )).
En d'autres termes, pour ce faire, vous devez utiliser git filter-branch
Pour réécrire l'historique, avec tout ce que cela implique. [Modifier: vous pouvez littéralement le faire sans git filter-branch
, Par exemple en le faisant dans git rebase -i
À la place, mais l'effet est le même.]
Edit 2: comme indiqué dans un commentaire (depuis supprimé), git rebase
A --committer-date-is-author-date
À cet effet. Il fait toujours la même réécriture de l'historique, mais c'est beaucoup plus pratique que de le faire avec la commande brute git filter-branch
.
git filter-branch --env-filter 'export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"'
filter-branch
vous permet de réécrire votre historique git. Il peut appliquer des transformations à chaque validation ou filtrer les validations en fonction de certains critères. Voir git filter-branch --help
pour une description complète et des instructions d'utilisation.
--env-filter
vous permet de définir les variables d'environnement présentes lors de la création du nouvel historique. Il est évalué pour chaque commit séparément.