git - 如何将第三方库导入 git?

标签 git import organization

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

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

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

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

  1. 解压
  2. 获取一些文件(我不需要 zip 中的所有文件)
  3. 将选定的文件导入 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/

相关文章:

C++ 库组织

android - 图像文件的工作草稿是否属于 android 项目文件夹?

Git rebase 不断失败,需要手动 merge 干预

Gitlab merge 两个分支

python - Flask 应用程序中的类导入出现问题

android - 将 CSV 联系人导入 Android 4 手机

javascript - 需要导入语法

android - 如何组织 Android 对话框 ID?

git - 使用部署 Hook 回滚 git 存储库

linux - GIT 权限 : Repository inside a repository