在超级项目中自动提交git子模块哈希

在超级项目中自动提交git子模块哈希,git,version-control,Git,Version Control,当您在git子模块中提交时,需要转到超级项目进行第二次提交,这是子模块的新哈希 这是令人难以置信的烦人,容易忘记,如果你不这样做,可能会导致各种各样的问题 我想做的是: 提交子模块中的更改 在超级项目中自动提交哈希 将子模块和超级项目推送到它们的远程源(“git push”) 确定您是否在子模块中、超级项目在哪里等并实现自动化的最佳方法是什么 可能是子模块中的某种提交后钩子?您尝试过吗?这正是它的设计目的 您也可以自己编写脚本。请注意,git命令本身有两个选项可以提供很大帮助:--work tr

当您在git子模块中提交时,需要转到超级项目进行第二次提交,这是子模块的新哈希

这是令人难以置信的烦人,容易忘记,如果你不这样做,可能会导致各种各样的问题

我想做的是:

  • 提交子模块中的更改
  • 在超级项目中自动提交哈希
  • 将子模块和超级项目推送到它们的远程源(“git push”)
  • 确定您是否在子模块中、超级项目在哪里等并实现自动化的最佳方法是什么

    可能是子模块中的某种提交后钩子?

    您尝试过吗?这正是它的设计目的

    您也可以自己编写脚本。请注意,git命令本身有两个选项可以提供很大帮助:
    --work tree
    --git dir
    。使用这些,您可以在不离开当前目录的情况下对任何回购协议进行操作


    然后还有
    git子模块foreach--recursive git push

    虽然子模块可能没有针对这种用法进行优化,但拥有子模块的子模块可以是维护多个独立项目的单点访问的解决方案

    这满足了实施单一回购协议时出现的需求。在采用这种设置时,在每个子模块更新上自动化超级项目提交可以减轻大部分管理步骤

    我拼凑了一个
    post commit
    hook,它非常简单,可以在子模块中的每次提交时自动更新超级项目

    #/bin/bash
    #
    #在提交子模块时更新超级项目。
    #用于.git/**modules/{THE_SUBMODULE}/hooks/post commit
    #其中,双星表示可变路径元素。
    #
    #取决于Git>=2.13。
    #在跨越存储库边界之前清理Git环境。
    #从https://stackoverflow.com/questions/36196548/cannot-trigger-post-commit-git-hook-on-git-submodule
    读取变量时;做
    未设置$variable
    
    完成<奇怪,零票+至少是1个。这些命令我都不知道;)对我来说,在试图操作超级项目时,命令行选项似乎不起作用。这可能是由于Git环境在子模块中的处理方式。