我正在研究如何将一些第三方代码导入到 git 存储库中。 第三方代码是ST提供的“stm32f10x_stdperiph_lib”。
lib 实际上是一堆普通的 c 文件(和头文件),当你执行 STM32 时,你只需要包含和构建它们。项目。
问题是他们只提供 zip 文件和 他们确实发布了新版本,所以我想添加更多控制。
所以我的计划是编写一个小脚本来执行此操作:
- 解压
- 获取一些文件(我不需要 zip 中的所有文件)
- 将选定的文件导入 git 存储库
我的问题从最后一步开始,如何导入旧文件并用新文件覆盖旧文件(并删除不再包含的文件)?
最佳答案
您正在寻找的是“供应商分支”。假设您想要处理此代码并将供应商的更新与您自己的补丁 merge ,以下是让这一切变得简单的方法。
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 简单得多。
现在您切换回您的开发(我假设是 master)并 merge 供应商的更改。
git checkout master
git merge vendor
正常处理任何冲突。您的补丁版本现在是供应商的最新版本。像往常一样在 master 上工作。
下次供应商提供新版本时,请重复该过程。这利用了 git 出色的 merge 功能,使您的补丁与供应商更改保持同步。
关于git - 如何将第三方库导入 git?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1695925/