Par exemple, il y a 100 enregistrements de commit sur la branche principale distante
Maintenant, je veux fusionner 1 à 10 commits en un seul commit, [comme si je n'avais soumis qu'une seule fois] et garder les 11 à 100 autres commits inchangés. Comment y parvenir ?
Après avoir examiné git rebase -i, il semble que seules les branches locales puissent être fusionnées. Comment les branches distantes seront-elles affectées après la fusion ?
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
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 pasComme 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