git 远程提交合并
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-05-02 09:47:56
0
2
635

例如远程master分支上有100次提交记录

现在想把1-10次提交合并成一次提交,【就好像我只提交过一次一样】其他11-100次提交保持不变。如何实现?

看了git rebase -i ,好像只能合并本地分支,合并以后怎么影响远程分支呢?

曾经蜡笔没有小新
曾经蜡笔没有小新

répondre à tous(2)
阿神

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 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) :

  1. Créer une nouvelle branche basée sur la branche actuelle : git checkout -b newBranch

  2. Revenir à avant le premier commit sur une nouvelle branche : git reset --hard <commit1Hash>

  3. Choisissez les dix premiers commits et mettez-les dans le tampon : git cherry-pick -n <commit1Hash>..<commit10Hash>

  4. Soumettez ces dix commits. git commit -m "<xxxx>"

  5. 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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal