recherche

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

Est-ce que git combine les opérations rebase --onto et merge --squash ?

Original :

A---B---C(master)
       /
      D---E---F---G(server)
         /
        H---I(client)

H, je suis branché de la branche serveur, mais je ne dépends pas du serveur. Le client est terminé, je veux extraire H, je le fusionne séparément dans le maître, donc j'exécute git rebase --onto master server client et le. le résultat est :

A---B---C(master)---H---I(client)
       /
      D---E---F---G(server)
         /
        H---I

PS : Ne trouvez pas l'exemple étrange, il vient de https://git-scm.com/book/en/v2/Git-Branching-Rebasing#More-Interesting-Rebases

Ce qui précède est l'opération de rebase, en utilisant l'opération de fusion, exécutez git merge --squash client master; git commit, le résultat est :

A---B---C(master)---J(D+H+I)
       /
      D---E---F---G(server)
         /
        H---I(client)

Alors la question est :
Y a-t-il une opération similaire à git merge --squash server...client master ou git rebase --onto master server client --squash L'effet est le suivant :

A---B---C(master)---J(H+I)
       /
      D---E---F---G(server)
         /
        H---I(client)

PS : je sais que vous pouvez d'abord rebaser --onto sur la branche temporaire, puis fusionner --squash avec master, mais c'est trop inélégant, n'est-ce pas ?

巴扎黑巴扎黑2795 Il y a quelques jours705

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

  • 習慣沉默

    習慣沉默2017-05-02 09:32:48

    Il y a déjà une réponse. Il est préférable d'utiliser rebase --interactive pour marquer la courge, mais j'ai oublié :

    git checkout client
    git rebase master -i

    ou

    git checkout client
    git reset --soft HEAD~2
    git commit -m 'add client'
    git checkout master
    git cherry-pick client

    Voyons si vous avez d'autres idées

    répondre
    0
  • Annulerrépondre