Maison > Questions et réponses > le corps du texte
例如远程master分支上有100次提交记录
现在想把1-10次提交合并成一次提交,【就好像我只提交过一次一样】其他11-100次提交保持不变。如何实现?
看了git rebase -i ,好像只能合并本地分支,合并以后怎么影响远程分支呢?
阿神2017-05-02 09:49:56
git rebase -i HEAD~99
Ensuite, changez le choix devant les 10 commits les plus éloignés à écraser.
Puis forcez le commit git push -f
Essayez, je ne sais pas si ça marche
巴扎黑2017-05-02 09:49:56
La manière mentionnée ci-dessus est correcte, mais elle devrait l'être git rebase -i HEAD~100
. HEAD~99
Seules 2 à 100 soumissions peuvent être lues, mais la première soumission ne peut pas être lue.
De plus, après avoir trouvé les 10 commits les plus éloignés, vous n'avez pas besoin de les changer en squash (ou s). Si vous ne prévoyez pas de conserver les informations de commit, utilisez simplement fixup (ou f). .
Après modification, cela doit l'être git push -f
car votre chronologie et le hachage de validation ultérieur ont changé. Bien sûr, votre code ne changera pas
Comme le défilement du dernier au premier peut prendre beaucoup de temps. . Fournissez une autre idée (ci-après, <xxx> est utilisé pour représenter des variables, et il n'est pas nécessaire de taper < et >. Mais d'autres symboles doivent être saisis) :
Créer une nouvelle branche basée sur la branche actuelle : git checkout -b newBranch
Revenir à avant le premier commit sur une nouvelle branche : git reset --hard <commit1Hash>
Choisissez les dix premiers commits et mettez-les dans le tampon : git cherry-pick -n <commit1Hash>..<commit10Hash>
Soumettez ces dix commits. git commit -m "<xxxx>"
Choisissez les commits restants et ne les mettez pas dans le tampon (ajoutez-les directement à la timeline) : git cherry-pick -n <commit11Hash>..<commit100Hash>
De cette façon, vous avez fait ce que vous voulez sur une nouvelle branche. Fusionnez-le simplement dans la branche que vous souhaitez modifier