recherche

Maison  >  Questions et réponses  >  le corps du texte

fusion de validation à distance git

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 ?

曾经蜡笔没有小新曾经蜡笔没有小新2805 Il y a quelques jours658

répondre à tous(2)je répondrai

  • 阿神

    阿神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

    répondre
    0
  • 巴扎黑

    巴扎黑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) :

    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

    répondre
    0
  • Annulerrépondre