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

And*_*w M 2 git version-control

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

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

Ale*_*ysh 5

使用git子树或git子模块.

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

简而言之:

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

优点:

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

缺点:

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

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

优点:

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

缺点:

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

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