【问题标题】:Remove contents from a branch which are there in another branch从一个分支中删除另一个分支中的内容
【发布时间】:2022-01-04 06:21:40
【问题描述】:

我正在做一个项目,我有一个 git 分支,比如 A,还有另一个分支 B(A 包含 B 的所有内容以及一些额外的内容),它们都是从 master 分支出来的.

现在我需要做的是创建第三个分支,它应该包含这两个分支的差异,即A-B,基本上只有分支 A 中的内容,而不是 B 中的内容。

我寻找可能的解决方案,其中大多数都指向将特定提交添加到新分支,但在我的情况下,这不起作用,因为一些提交也影响了我现在想要分离的代码。我在脑海中建立的解决方案指出,我可能应该对 A 和 B 进行比较,然后在 master 结帐时应用补丁。

还有其他方法吗?

【问题讨论】:

  • 你认为你为什么需要这个?据我所知 - git 中没有这方面的功能。您必须编写自己的脚本,每次源分支更改时都可以重新运行。

标签: git github version-control diff


【解决方案1】:

附图:

*--*--*--* <- master
    \
     a--b--c <- A
            \
             d--e--f <- B

如果您的意图是在master 之上添加d--e--f(并且只有这3 个提交),您可以使用git rebase

# from branch B :
git checkout B

# create a temporary branch :
git checkout -b onlyB

# use rebase with that temporary branch :
git rebase --onto master A onlyB

这应该会导致你得到这个结果:

*--*--*--* <- master
    \     \
     \     d'--e'--f' <- onlyB
      \
       a--b--c <- A
              \
               d--e--f <- B

d'--e'--f' 应包含与d--e--f 相同的更改。

【讨论】:

  • 很好,但为什么前两个命令是必需的?
  • @konsolebox : 它们不是 :) 我认为保留原始分支会更方便,以防变基操作变得过于复杂,但您也可以直接变基分支 Bgit rebase --onto master A B
猜你喜欢
  • 2020-11-19
  • 1970-01-01
  • 1970-01-01
  • 2016-05-12
  • 2011-05-27
  • 2011-07-15
  • 2012-02-24
  • 2021-08-09
  • 2021-04-17
相关资源
最近更新 更多