J'ai utilisé un autre moyen pour quelques temps. En fait, il s'agit d'un manuel git rebase -i
et il est utile lorsque vous souhaitez réorganiser plusieurs s'engage notamment à l'écraser ou le fractionnement de certains d'entre eux. Le principal avantage est que vous n'avez pas à décider sur chaque livraison est destin au même moment. Vous aurez aussi tous Git fonctions disponibles pendant le processus, à la différence lors d'un rebase. Par exemple, vous pouvez afficher le journal de à la fois originale et réécrit l'histoire à tout moment.
Je vais consulter les commits de la manière suivante, de sorte qu'il est lisible facilement:
C # good commit after a bad one
B # bad commit
A # good commit before a bad one
Votre histoire dans le début ressemble à ceci:
x - A - B - C
| |
| master
|
origin/master
Nous allons recréer de cette façon:
x - A - B*- C'
| |
| master
|
origin/master
C'est la procédure:
git checkout B # get working-tree to the state of commit B
git reset --soft A # tell git that we are working before commit B
git branch rewrite-history # create a branch for our alternative history
git checkout rewrite-history # continue on our new branch
Maintenant améliorer votre ancien valider à l'aide de git add
(git add -i
, git stash
etc.) maintenant. Vous pouvez même diviser votre ancien commit en deux ou plus.
git commit # recreate commit B (result = B*)
git cherry-pick C # copy C to our new branch (result = C')
Résultat intermédiaire:
x - A - B - C
| \ |
| \ master
| \
| B*- C'
| |
| rewrite-history
|
origin/master
Finissons-en:
git checkout master
git reset --hard rewrite-history # make this branch master
Ça y est, vous avez peut - push
vos progrès maintenant.