Maison > Questions et réponses > le corps du texte
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 ?
習慣沉默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