/ / Modifier l'historique de github - git, git-commit

Modifier l'historique de github - git, git-commit

Je m'excuse par avance de poser cette question car elle a déjà été posée un million de fois.

J'ai besoin de modifier l'historique git de mon projet, L'historique de commit ressemble à ceci:

[E] <- [D] <- [C] <- [B] <- [A]

Où: A: ajouté du code, B: Ajout de code et de données, C: Projet restructuré, D: Suppression de toutes les données, E: Ajout de code

Le problème était qu’à commit C notre projetLe groupe a été informé que les données devaient être stockées localement et non publiquement sur git. Je ne suis pas très expérimenté avec git, donc la première chose que j'ai faite a été de supprimer les données. Mais cela n’a pas fait grand chose puisque les données pouvaient toujours être consultées dans l’histoire. Comment puis-je résoudre le problème afin que l'historique ressemble à ceci:

[E] <- [C] <- [B] <- [A]

Où: A: ajouté du code, B: Ajout de code, C: Projet restructuré (sans aucune référence aux données) E: Ajout de code

Réponses:

4 pour la réponse № 1

Voici un moyen de supprimer un commit spécifique si de l'historique

git rebase --onto commit-id commit-id HEAD

Vous pouvez utiliser la commande ci-dessous pour supprimer le commit "D" de l'historique

Git rebase --onto D E HEAD


1 pour la réponse № 2

Vous pouvez le faire avec ces commandes:

# Rebase from C commit in interactive mode...
git rebase -i C

# Then remove the D commit line in the editor, save and quit.
# You can edit commit messages by using "edit" option for
# concerned commits.
# Resolve conflicts if needed and finish rebasing.

OU (sans modification du message de validation):

# Rebase from C: Pick E history but exclude D history
git rebase --onto C D E

Ensuite, vous devrez forcer la modification (avec tous les problèmes que cela peut entraîner ...).

# --force-with-lease means:
# "If anybody already pushed after the last known origin/<branch> sha1,
# The push force command will be aborted (avoids to loose newers pushes
# from your friends...).
git push --force-with-lease origin <branch>