J'ai accidentellement créé commits par « inconnu » dans mon dépôt, et a décidé d'essayer d'exécuter une commande à partir here:Git - Duplicate commit problème
git filter-branch --commit-filter '
if [ "$GIT_COMMITTER_NAME" = "unknown" ];
then
GIT_COMMITTER_NAME="..";
GIT_AUTHOR_NAME="..";
GIT_COMMITTER_EMAIL="...";
GIT_AUTHOR_EMAIL="...";
git commit-tree "[email protected]";
else
git commit-tree "[email protected]";
fi' HEAD
Au début, je pensais que tout allait bien, jusqu'à ce que je remarqué dans gitk que chaque commit avant d'exécuter ceci était dupliqué, pas simplement édité comme je le pensais initialement.
Est-il possible de nettoyer cela?
EDIT: OK, gitk montre à la fois les anciens commits (ceux avec les commiters « inconnus » mélangés) et les nouveaux commits (ceux réécrites), divisé en un certain point à mi-chemin autour. Pensez à un groupe de commits, puis dupliqués (et avec les modifications), et empilés sur ceux d'origine. Ce que je veux faire est si possible, est d'enlever les originaux.
Voyons voir si je reçois ceci: avez-vous un arbre de commit qui ressemble à '... - a - b - c - (*) - a '- b' - c '--d - e', où '(*)' est le commit sur lequel vous avez exécuté la mauvaise commande, '[abc]'' sont des doublons erronés que vous voulez supprimer, et '[de]' vous valide vouloir garder? –
Eh bien, c'est plus compliqué en raison de la branche, mais fondamentalement comme vous l'avez dit, mais je veux garder les '' 'car ils ont les champs d'auteur corrigés. – unrelativity
Bon, alors vous voulez supprimer [abc], mais garder [abc] '? –