如何将第三方库导入git?

Joh*_*han 12 git import organization

我正在研究如何将一些第三方代码导入到git存储库中.第三方代码是ST提供的"stm32f10x_stdperiph_lib".

lib实际上是一堆普通的c文件(和头文件),你只需要在执行STM32项目时包含和构建它们.

问题是他们只提供一个zip文件,他们确实发布了新版本,所以我想添加更多的控件.

所以我的计划是编写一个执行此操作的小脚本:

  1. 拉开拉链
  2. 抓住一些文件(我不需要zip中的所有文件)
  3. 将所选文件导入git存储库

我的问题从最后一步开始,如何使用新文件导入和覆盖旧文件(并删除不再包含的文件)?

Sch*_*ern 24

您正在寻找的是"供应商分支".假设您想要处理此代码并将供应商的更新与您自己的补丁合并,这就是您如何轻松实现这一目标.

git checkout -b vendor    # create a vendor branch and check it out
Run Code Online (Sandbox Code Playgroud)

这是一次性的事情.供应商分支及其仅包含来自第三方供应商的更新.您永远不会在供应商分支中工作,它包含供应商代码的干净历史记录."供应商"这个名字没有什么神奇之处,只是我的术语从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
Run Code Online (Sandbox Code Playgroud)

我们首先删除所有内容,以便git可以查看供应商删除的内容.git能够看到删除和猜测移动的文件,这使得这个过程比使用Subversion简单得多.

现在你切换回你的开发(我假设大师)并合并供应商的变化.

git checkout master
git merge vendor
Run Code Online (Sandbox Code Playgroud)

正常处理任何冲突.您的修补版本现在与供应商保持同步.按照正常工作.

下次有供应商提供的新版本时,请重复此过程.这利用了git的出色合并,使您的补丁与供应商的变化保持同步.