使用Git,如何将分支A上的两个版本的差异应用于分支B?

时间:2013-04-15 13:43:06

标签: git diff vendor-branch

我们的第三方软件每年更改约3或4次。供应商的代码显然没有考虑我们的自定义,当他们的最新代码(单个Pro * C文件)应用于我们的生产系统时,它会将所有这些代码擦掉。

同事建议我们将此代码放入Git,并尝试使用其工具来管理更改。为此,我们做了以下工作。我在Git中创建了两个分支,默认主分支,另一个名为“custom”。在自定义分支中,该文件的第一个版本是去年10月的未修改点版本,该文件的第二个版本是我们的自定义项已成功应用和测试。

在主分支中,第一个版本再次是10月发布。第二个是他们(当前)三月发行。

我需要采取哪些步骤将两个自定义分支版本之间的差异应用于主分支?

在subversion中,有一些教程和示例可用于所谓的“供应商丢弃”,但我在Git的这种情况下找不到太多。绝对需要处理我的Git技能。

1 个答案:

答案 0 :(得分:3)

这是所以简单,即使有关于此的教程,svn也会完全尴尬。

让我们看看这个图表中的场景:

A -- master
 \
  B -- custom

在此图表中,A是第三方软件的原始10月发布。 B是您所做的更改。

现在有一个新的March发布的第三方软件。

第1步:明显的部分

首先,将新版本放在分支master中的存储库中:

$ git checkout master    # go to master
$ cp -R ../march/* .     # overwrite with new version
$ git add ????           # add any new files they might have added (check with `git status`)
$ git commit -a          # make a new commit

我相信这一步非常明显。所以现在你有了下面的图表:

A----C -- master
 \
  B -- custom

C是新提交,其中包含March版本。

第2步:超级简单部分

现在你需要做的就是:

$ git checkout custom    # go to custom
$ git merge master       # get the changes over

完成。

图表现在是:

A----C -- master
 \    \
  B----D -- custom