Lorsque vous effectuez git rebase -i
il y a ce morceau intéressant dans la doc:
Si vous voulez plier en deux, ou plus, s'engage dans une, remplacer la commande "pick"
pour la deuxième et les suivantes s'engage avec "squash"
ou "fixup"
. Si les commits avait différents auteurs, plié, commit sera attribué à l'auteur de la première validation. La suggestion de message de validation pour le plié commettre est la concaténation des messages de validation de la première engager et de ceux avec l' "squash"
de commande, mais omet la validation des messages de commits avec l' "fixup"
commande.
- Si vous avez une histoire de l'
A-B-C-D-E-F
,
- et que vous souhaitez modifier engage
B
et D
(= 2 commits),
ensuite, vous pouvez faire:
git config user.name "Correct new name"
git config user.email "correct@new.email"
- créer vide s'engage (un pour chaque commit):
- vous avez besoin d'un message pour but rebase
git commit --allow-empty -m "empty"
- démarrer le rebase opération
git rebase -i B^
-
B^
sélectionne le parent de l' B
.
- vous voulez mettre un vide s'engager avant chaque validation de modifier
- vous voulez changer d'
pick
de squash
pour ceux.
Exemple de ce que l' git rebase -i B^
vous donnera:
pick sha-commit-B some message
pick sha-commit-C some message
pick sha-commit-D some message
pick sha-commit-E some message
pick sha-commit-F some message
# pick sha-commit-empty1 empty
# pick sha-commit-empty2 empty
changement:
# change commit B's author
pick sha-commit-empty1 empty
squash sha-commit-B some message
# leave commit C alone
pick sha-commit-C some message
# change commit D's author
pick sha-commit-empty2 empty
squash sha-commit-D some message
# leave commit E-F alone
pick sha-commit-E some message
pick sha-commit-F some message
Il vous invite à modifier les messages:
# This is a combination of 2 commits.
# The first commit's message is:
empty
# This is the 2nd commit message:
...some useful commit message there...
et vous pouvez simplement supprimer les premières lignes.