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

La fusion Git doit-elle fusionner les branches ? Puis-je fusionner deux commits ?

Opération de fusion Git, doit-il fusionner la pointe de la branche (pointe de la branche), peut-il fusionner deux commits ?
Par exemple, il existe le correctif de branche et le maître de branche, la structure est la suivante :

      /A+--+B+----+C   hotfix
     /

init---->D +--->E +--->F+---->G maître

Question 1 :
Je souhaite fusionner un commit au milieu de la branche thotfix, tel que B, avec la branche principale actuelle.
Est-ce que ça va ?
Parce qu'à en juger par l'explication des paramètres de la commande, commit peut être utilisé à la place du nom de branche branchName.

Question 2 :
S'il existe toujours un sujet de branche (non affiché sur l'image) et que la branche actuelle est master, je souhaite fusionner les branches hotfix et topic, mais ne pas les fusionner dans la branche principale actuelle, et ne pas le faire. changer de branche. Je souhaite conserver la branche actuelle. Je suis toujours maître, puis-je le faire ?
Parce qu'à en juger par les paramètres de la commande, plusieurs commits peuvent être acceptés. Le manuel dit que la fusion de plusieurs commits constitue une fusion de poulpe. Je me demandais si la fusion de plusieurs commits devait être fusionnée dans la branche actuelle. Il y a donc ce problème.

学习ing学习ing2651 Il y a quelques jours1257

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

  • ringa_lee

    ringa_lee2017-06-17 09:17:31

    Utilisez Cherry-pick pour sélectionner les soumissions que vous souhaitez

    répondre
    0
  • 阿神

    阿神2017-06-17 09:17:31

    Tout d'abord, il semble y avoir quelque chose qui ne va pas avec votre photo. Vous ne pouvez pas dire où les deux branches sont séparées. Vous devriez utiliser git cherry-pick 命令,而不是 merge. Je ne peux que deviner, est-ce vrai ?

       A - B - C           hotfix
      /
    init - D - E - F - G   master

    Les réponses suivantes sont toutes basées sur cette supposition. Si c'est différent du vôtre, veuillez commenter.

    Question 1 : Pour faire simple, il est préférable d'utiliser cherry-pick
    首先你要知道,git merge <hash>git cherry-pick <hash> 是不同的。。如果你要在这里用 git merge B, vous obtiendrez alors ce résultat :

         A  -  B  -  C   hotfix
        /       \
    init-D-E-F-G-G'      master

    Mais si vous l'êtes git cherry-pick B, vous obtiendrez ce résultat :

       A - B - C                hotfix
      /
    init - D - E - F - G - B'   master

    merge 有它的优点,因为每一次 merge 其实都是创建一个新的 "merge commit",而且会 "保留历史",所以是一个 "non-destructive"(非破坏性)的过程。当然,cherry-pick 也有它的缺点,首先是创建一个新的 hash,这可能会导致多人协作的混乱。比如有人已经在 G 后面又加了 HJKL,那至少他还要 rebase 一下。另外,这个 B' 也不会像 merge 那样保留自己的历史记录。因此,确切的说,这个 B' 更像是一个 patch。(请参考 git format-patch https://git-scm.com/docs/git-...

    Personnellement, je préfère cherry-pickrebase 这样的命令,不太喜欢 merge,最主要是因为历史线简洁很多。虽然这两个命令比 merge C'est un peu plus destructeur, mais c'est bien d'être un peu familier avec git et de savoir ce que fait chaque étape et quel impact elle peut avoir.


    Question 2 :
    J’ai l’impression que ce n’est pas possible. merge 不像 rebase 那样有类似于 --onto 这样的参数。还是切换过去再 merge Faisons-le.

    Quand vous avez mentionné la fusion des poulpes plus tard, vous avez dit --strategy=octopus 么?不太确定这个 strategy 和你要问的有什么联系。。因为多个 branchmerge 默认 strategy 就是 octopus。。不用去专门设置。。。顺便,对于单个 HEAD 的 merge, et la stratégie par défaut est récursive.

    Pour la fusion de plusieurs commits que vous avez mentionnés, veuillez décrire vos besoins en détail. Ou faites un dessin pour le compléter

    répondre
    0
  • Annulerrépondre