在另一个项目中使用Git仓库中的项目

时间:2011-02-21 01:17:50

标签: git version-control

我正在构建一个框架,使一些常用功能(数据库连接)更容易,并希望在另一个项目中使用它。我总是可以复制并粘贴它,但我正在努力并不断扩展它。每当我在我的Git仓库中提交时,让它复制更新后的自我会容易得多。

我可以使用Git自动更新其他项目中的框架,还是必须找到其他解决方案?

2 个答案:

答案 0 :(得分:5)

使用git子树或git子模块。

上次我检查过,子模块有一些重大问题(但我听说他们在最近的版本中有所改进)。有关详细信息,请参阅此处:Git submodules workflow

简而言之:

子树是常规Git 分支,与特殊合并策略合并,将所有文件放入主机存储库工作副本的子目录中。除了合并策略(仅在创建合并提交时才重要),Git“子树”是一个完全正常的Git分支。

优点:

  • 除非需要从子树中提取新的更改,否则不需要额外的工具支持,即使这样,所有支持都是-s subtree命令行选项(有关完整工作流程,请参阅here)。只有在执行子树拉动时才需要记住子树。

缺点:

  • 所有子树提交都在主机项目的历史记录中可见。
  • 不要将更改提交到子树所在的主机存储库目录,或者在下一个子树拉中遇到冲突。

子模块是主机存储库中的Git 存储库

优点:

  • 更清洁的历史记录,更好地与主机存储库分离。
  • 可以直接从子模块库的上游直接提交子模块(或者我认为)。

缺点:

  • 对于每个(或许多)Git命令,你已经记住你正在处理带有子模块的存储库,很多讨厌的角落情况(或者当我看的时候)。使用存储库的每个克隆所需的特殊工具支持。

免责声明:我对子模块有偏见。试着亲自看看,哪种方法更适合您的工作流程。

答案 1 :(得分:1)

GIT-子模块。

在不同的地方进行更新时会遇到一些问题,但它应该可以解决。