繁体   English   中英

Git子模块远程服务器

[英]Git submodule remote server

我的本地计算机上的以下2个文件夹包含共享库/帮助器:

  • /共享/库/
  • /共享/助手/

上面的库应该是我后端的子模块...

  • /后端/应用/库/
  • /后端/应用/助理/

...以及我的前端:

  • /前端/应用/库/
  • /前端/应用/助理/

到目前为止,所有内容都已配置并且可以正常工作!

此外,我还有用于前端和后端的远程服务器。

现在,我想获得以下信息:如果我在一个共享库中提交了更改,我想通过一个git push(后端,本地计算机上的前端和后端,服务器上的前端)将更改推入所有4个存储库中。

如果这是不可能的:如果我在库中提交更改,那么我想一次将更改至少推送到我的2个本地目录中。 如果我将本地目录之一的更改推送到远程服务器,则子模块的更改也应自动推送到远程目录。

共享库中的更改只能在共享文件夹中进行,而不能在后端或前端中进行!

谢谢你的帮助!

现在,我想获得以下信息:如果我在一个共享库中提交了更改,我想通过一个git push(后端,本地计算机上的前端和后端,服务器上的前端)将更改推入所有4个存储库中。

简单的git push是不可能的。 您不能使用工作副本将更改“推送”到存储库-您只能推送到裸存储库。 对于带有工作副本的存储库,您只能从其他地方拉出。

子模块的使用有些棘手,我已经尝试过做类似您之前谈论的事情。 我完全放弃了这个想法,而是希望使git子模块中的内容更加通用,并能够作为独立的东西安装在系统上。

这样看-如果库中的代码与主存储库有足够的可分离性,那么将其视为自己的软件包并分别进行开发/部署是合乎逻辑的。 如果库中的代码严格依赖于您的主存储库,那么无论如何它都应该只是一个存储库。

并不是说子模块没有用-我仍然在使用它们。 如果要使用它们,则必须遵循它们的规则:

  1. 进行更改后,提交并推送子模块中的子模块更改
  2. 推送子模块中的更改后
    • 在父仓库中提交子模块更改
    • 推动父母回购
  3. 如果有任何回购协议需要子模块中的更改
    • 在另一个仓库中拉子模块
    • 解决冲突并推动任何改变
    • 在父仓库中提交子模块更改
  4. 如果将子模块拉到其他存储库导致更改
    • 返回第3步获取原始存储库

看起来很麻烦,但是子模块与其他任何回购协议实际上并没有什么不同。 它们独立存在,您需要以这种方式对待它们。 另外,从父级的角度来看,子模块文件夹只是其中包含sha1哈希的文件。 git submodule命令只是方便脚本,用于在父级引用的存储库上进行操作。

UPDATE

虽然您无法在单个命令中使用纯git来做到这一点,但是您可以编写一个bash脚本来为您完成大部分工作,并且可以将其与git hooks组合以使其自动化。

它将无法自动处理冲突解决方案,如果出现问题,您可能会试图找出4个单独存储库的状态。

我不会推荐这样的解决方案。 它过于复杂且可能脆弱,要使它变得强大灵活且通用,您将不得不涉及的可能性之多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM