您正在寻找的是“供应商分支”。假设您想要处理此代码并将供应商的更新与您自己的补丁合并,那么您可以通过以下方式轻松实现。
git checkout -b vendor # create a vendor branch and check it out
这是一次性的事情。供应商分支及其仅包含来自第 3 方供应商的更新。您永远不会在供应商分支中工作,它包含供应商代码的干净历史记录。“供应商”这个名字没有什么神奇之处,它只是我的 CVS 术语。
现在我们将把供应商的最新版本放在那里。
find . -not -path *.git* -and -not -path . -delete # delete everything but git files
dump the 3rd party code into the project directory # I'll leave that to you
git add . # add all the files, changes and deletions
git commit -a -m 'Vendor update version X.YY' # commit it
git tag 'Vendor X.YY' # optional, might come in handy later
我们首先删除所有内容,以便 git 可以看到供应商删除的内容。git 查看删除和猜测移动文件的能力使得这个过程比 Subversion 简单得多。
现在您切换回您的开发(我假设是大师)并合并供应商的更改。
git checkout master
git merge vendor
正常处理任何冲突。您的修补版本现在与供应商保持同步。像往常一样在master上工作。
下次有来自供应商的新版本时,重复该过程。这利用了 git 出色的合并功能,使您的补丁与供应商的变化保持同步。