如何将分支B出生的分支A应用到分支C(不用B到C)?

时间:2017-09-11 18:42:40

标签: git

我有这些分支:

git branch -a

我们称呼他们:

M master P limpiezaPropiedades F listaYFormularios

M 是从 M 创建的,当我创建 F 时,我检出了 P 。然而,这两个分支没有关联,我最近才意识到我做了什么。所以现在我想在 F 中应用 M 提交而不应用 P 中的提交。

我想把两个分支“放在同一级别”:

M master P limpiezaPropiedades

M master F listaYFormularios

我怎样才能以最简单的方式实现这一目标?

2 个答案:

答案 0 :(得分:1)

一些可能的解决方案:

1)。樱桃挑选

git checkout master
git cherry-pick limpiezaPropiedades..listaYFormularios   # Picks all commits in this range, not including the commit at 'limpiezaPropiedades'

2)。变基

git checkout listaYFormularios
git rebase -i master
# Remove lines for commits that belong to limpiezaPropiedades
# BE CAREFUL, if you remove a commit that belongs to 'listaYFormularios', it will be lost and you will have to go through the reflog to recover it

答案 1 :(得分:1)

您可以执行交互式rebase来删除F中不需要的提交。这可以通过执行以下操作来完成:

  1. 确保您已F签出。
  2. 输入命令git rebase -i master
  3. 这将打开您配置的编辑器,其中包含分支F上不在分支master上的所有提交的列表。此文件是rebase命令在完成编辑后将重放的脚本。在这种情况下,由于您要做的只是从F中删除一些提交,请删除代表P中您不想要的F提交的行。< / LI>
  4. 保存并关闭文件。然后,Git会删除您从文件中删除的提交,F现在将基于master
  5. 请注意,如果你没有推送F,你应该(可能)只执行此操作,因为这会导致提交哈希值发生变化,并且当他们拉动你的分支时会引起其他开发人员的悲痛。

    有关变基的更多信息,Git - Rewriting History有一个非常好的概述。