您正在寻找的是“供应商分支”。假设您想要处理此代码并将供应商的更新与您自己的修补程序合并,请按照以下步骤操作。
git checkout -b vendor # create a vendor branch and check it out
这是一次性的事情。供应商分支及其仅包含来自第三方供应商的更新。您从不在供应商分支中工作,它包含供应商代码的清晰历史记录。 “供应商”这个名字没有什么魔力,它只是我的术语从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
正常处理任何冲突。您的补丁版本现在与供应商保持一致。正常工作在主人身上。
下一次有供应商的新版本,请重复此过程。这充分利用了git的优秀合并功能,让您的补丁随供应商变化而保持最新。
由于它们在zip文件上有相同的名称(即使它们改变了内容),我感到只要下载解压并希望最好就是危险的。 – Johan 2009-11-08 10:51:09
我明白了。不过,你不必从网上下载它。您可以从仅包含经过测试和认可的版本的内部服务器获取。 – lemonad 2009-11-08 10:57:09
为什么不使用'git clean'而不是使用'find'来删除旧版本? – 2009-11-08 11:29:02