Extrait de code git
Corriger un commit
Cette astuce fonctionne lorsque vous êtes seul sur votre dépôt. Elle peut être dangereuse lorsque de nombreuses personnes travaillent sur le même dépôt.
Faites :
git reset --soft HEAD^
Jusqu’au mauvais commit. Puis faites :
git push --force origin master
Le mauvais commit est maintenant supprimé de Github.
Ensuite, remontez jusqu’à avoir de mauvais commit dans votre dépôt :
git reset --soft HEAD
Puis faites :
git filter-branch --commit-filter '
if [ "$GIT_AUTHOR_EMAIL" = "bad.address@mail.com" ];
then
export GIT_AUTHOR_EMAIL=good.address@mail.com;
export GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME";
export GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL";
fi;
git commit-tree "$@"'
Cette ligne fork la branche actuelle avec un nouveau commit, corrigé.
Si vous avez cette erreur :
A previous backup already exists in refs/original/
Vous pouvez faire :
git update-ref -d refs/original/refs/heads/master
Puis réessayer la commande git filter-branch
.
Une fois que votre branche master
a les bons commits, vous pouvez la pousser entièrement sur Github via :
git push --force origin master
D’autres options peuvent être trouvées ici.
Nettoyer refs/original/refs/heads/master
Après un filter-branch
, il peut rester un résidu local de la branche, faisant office de backup : refs/original/refs/heads/master
. Pour le supprimer, il faut passer par :
git update-ref -d refs/original/refs/heads/master
Plus d’information ici.
Faire un commit à une date donnée
Pour avoir une date valide :
$ date
Sat 06 Feb 2021 09:12:48 PM CET
GIT_COMMITTER_DATE="Sat 06 Feb 2021 09:12:48 PM CET" git commit -m"message" --date "Sat 06 Feb 2021 09:12:48 PM CET"
Il faut mettre la date aux deux endroits.
Modifier la date d’un commit
git filter-branch --env-filter \
'if [ $GIT_COMMIT = 119f9ecf58069b265ab22f1f97d2b648faf932e0 ]
then
export GIT_AUTHOR_DATE="Sun 07 Feb 2021 11:33:10 AM CET"
export GIT_COMMITTER_DATE="Sun 07 Feb 2021 11:33:10 AM CET"
fi'
Dernière mise à jour : sam. 06 février 2021