我正在开发两个不同的网站,每个网站都有自己的git存储库。我有一些通用代码(PHP和JavaScript),这两个站点都是通用的,我在开发机器上的一个单独的libs
文件夹中使用符号链接,以便两个本地网站都相信这个{{1文件夹位于网站的根目录。
我也想用git管理libs
文件夹。我可以想象两种不同的方法:
libs
文件夹的两个远程副本,每个站点仓库中有一个libs
文件夹,为两个远程站点repos提供了解这个libs
repo是否存在的方法,以便一起跟踪所有这些。< / LI>
我很感激帮助决定这两个选项中的哪一个更可靠(或者是否有更好的选择)。我也很感激帮助理解如何设置所选择的选项。
答案 0 :(得分:1)
这是git submodules的内容(另见Pro Git)。
libs
是一个单独的代码实体。它在两个(可能更多)项目之间共享,并且可以单独进行版本控制。子模块的完美候选者。
在项目A中做:
在项目B中做:
git add -u
,git commit -m'detached libs'
git submodule add <repo-url> [<local path>]
现在你可以检查它是如何工作的,从两个回购推进和拉动。
额外问题:
为什么不从A?中的子模块中克隆B中的子模块 这使得结构更加独立和灵活。如果你有N个项目怎么办?如果你想删除A怎么办?如果要在文件系统中移动A,该怎么办?该计划将破裂。
为什么不用git-subtree
启动两个子模块?
Commit的sha1还取决于创建时间。因此,两个子模块将具有完全相同的内容(并且对于blob和树匹配sha1-s),但历史完全不同。你必须合并它们,这是额外的工作。