无法触发 git 子模块上的提交后 git hook

2023-12-03

我们使用带有多个子模块的 git 模块。为了让日常使用更方便,我想要一个 post-commit 钩子,它会自动将子模块添加到 main/super/root git repo/clone/module 中的 git 索引中,例如git add mychangedsubmodulename以便准备提交以更新主存储库中子模块的提交引用,并且可能还有更多想法。

.git 文件夹位于主模块根文件夹内,由于克隆了主存储库,因此似乎还包含子模块相关的内容--recursive选项。我的 git 版本是git version 2.6.4 (Apple Git-63).

我可以轻松地在主存储库中创建一个提交后挂钩,但它不会从子模块内的提交中触发,到目前为止我认为这是正确且适当的,但也可能是可能的解决方法的线索。

我尝试在不同位置定义几个提交后挂钩文件,也遵循问题 10848191没有任何成功。

如何实现在子模块提交时自动修改主模块?

Update:在子模块提交后挂钩有时可以工作之后,我设法 cd 进入主存储库并通过清理环境变量成功调用 git。

# clear git environment or git would confuse main and sub repos when crossing boundary by only changing pwd
while read variable; do
    unset $variable
done < <(env | grep "^GIT_" | sed 's/=.*//g')

然而,最初的问题是如何触发子模块挂钩。这似乎只是有时有效。


您可以在提交后挂钩中使用如下所示的内容:

git --work-tree=$PWD/.. --git-dir=$PWD/../.git branch

上述命令取自.git/modules/my-sub-module/hooks/pre-commit文件在我的git version 2.3.2 (Apple Git-55)。我使用上面的命令列出主存储库的所有本地分支。

注意:不幸的是,更改目录并在提交后挂钩内运行 git 命令可能不起作用,因为 git 依赖于一些预配置的默认设置和环境变量。所以就我而言cd path-to-main-repo-directory && git some-command在我里面.git/modules/my-sub-module/hooks/pre-commit没有帮助我。

您还可以检查手册在这里更多细节。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法触发 git 子模块上的提交后 git hook 的相关文章

  • Sublime Text 2 的 git 提交错误[重复]

    这个问题在这里已经有答案了 我正在 Udacity 上学习 如何使用 Git 和 GitHub 课程 我正在按照示例进行操作 但遇到了问题 我自己尝试通过谷歌搜索和反复试验来解决问题大约两个小时 我认为是时候在 StackOverflow
  • 将 git dcommits 切换到 svn 分支

    I had master dcommit到 和rebase来自 颠覆trunk 我创建了一个中间 Subversion 分支tc 合并来自 2 个不同分支的更改 使用 git branch master git svn branch tc
  • libgit2 返回:Refspec 'refs/heads/origin/HEAD' 在 TortoiseGit 中未找到错误

    启动 TortoiseGit 时出现此错误 无法获取所有参考文献 libgit2 返回 未找到 Refspec refs heads origin HEAD 虽然很烦人 但这并不妨碍我使用 TortoiseGit 然而 我想让它消失 因为它
  • 为什么我使用某些 git 命令后终端变得无响应?

    我经常 真的每次 使用该命令后git log我的终端对进一步的输入没有响应 这是在 OSX 上 是否有一个我不知道的命令将使终端再次激活 而不是仅仅退出终端并重新开始 您正在使用一个无需滚动即可显示日志的程序 很可能less 可以通过按q
  • git:检查标签,修改某些内容,然后再次标记它

    我觉得我应该知道这一点 但我很困惑 我在 github 上分叉了一个存储库 我需要的是签出一个标签 称为 v1 0 5 修改文件上的语句 使用名为 1 0 5 的新标签 不带 v 重新标记该状态 然后执行对 master 进行同样的更改 让
  • Git 合并删除文件

    这是第二次发生这种情况 当我进行合并时 我后来意识到正在合并的分支中的一些文件不再位于正在合并的分支中 最新的例子是我们有一个功能分支 我一直在合并主开发分支中的更改 合并后我们丢失了很多文件 并且它们现在不存在于功能分支中 为什么会出现这
  • GIT:无效路径“.editorconfig”

    从 master 克隆项目时出现以下错误 错误 无效路径 editorconfig 致命 无法签出工作树 警告 克隆成功 但结账失败 您可以使用 git status 检查签出的内容 并使用 git Restore source HEAD
  • 使用 Git 部署时压缩 JS/CSS 文件

    我对 git 有点陌生 另外 这是我第一个自动化部署过程的项目 到目前为止 能够做到这一点真是太幸福了git push dev并上传文件 复制配置文件等 现在 当我推送到我的开发服务器时 我想缩小 JS CSS 文件 我正在考虑在服务器上安
  • Django 和 VirtualEnv 开发/部署最佳实践

    只是好奇人们如何结合 virtualenv 部署 Django 项目 更具体地说 如何使生产虚拟环境与开发计算机正确同步 我使用 git 进行 scm 但 git 存储库中没有 virtualenv 我应该这样做 还是最好使用 pip fr
  • Azure Devops Pipeline YAML 中的 Git 标记名称

    Summary 如何获取 Azure Devops Pipeline YAML 文件中当前 git 标签的名称 我想做什么 我正在 Azure Devops 中设置构建管道 创建新的 git 标签时会触发管道 然后我想构建 docker 镜
  • git 工作目录中的更改拒绝恢复

    我的 git 工作目录中有五个文件git status显示为已修改 当我git diff他们 整个文件显示为已更改 我有core autocrlf true但似乎没有效果 当我试图从同事那里获取更改时 真正的问题出现了 修改 的文件之一会被
  • 使 .git 目录 web 不可访问

    我有一个网站 我使用 github 闭源 来跟踪更改和更新网站 唯一的问题是 git 目录似乎可以通过网络访问 我怎样才能停止这个并且仍然能够使用 git 我应该使用 htaccess 吗 我应该更改 git 的权限吗 把这个放在一个 ht
  • Git:如何维护项目的两个分支并仅合并共享数据?

    假设我有一个项目的两个分支 IMClient MacOS 和 IMClient Windows 它们的代码仅 比方说 一个目录 main 有所不同 所有其他目录都包含与系统无关的代码并且可以互换 有些工作人员在 Windows 版本上工作
  • 无法从另一台计算机访问 git 分支

    基本上我看不到另一台计算机上的分支 我跑 git branch a 在家用电脑上我得到 C learn ror sample app filling in layout gt git branch a filling in layout m
  • 名称和电子邮件在 Git 的每用户配置文件中设置,但 Git 仍使用默认生成的名称和电子邮件

    标题已经说了 但我会更彻底地解释一下 我已使用以下命令按照建议配置了用户名和电子邮件 git config global user name git config global user email 我可以通过执行以下操作来验证这是设置的g
  • 在 git 中记录前 10 个

    两个问题 如何从头到尾显示 git 中的前 10 个提交 无分行 如何指定提交索引并记录它 显示第二个或第三个 我知道 git 使用父级来链接提交 很容易从头到尾记录提交 喜欢 git log HEAD 10 但我需要从头到尾查询 可以吗
  • 如何防止克隆我的 github 存储库?

    我正在尝试找到一种方法来防止从 github 存储库克隆 例如 我有一个私有存储库 有些人在该存储库中工作 在公司计算机中 团队中的每个人都设置了授权级别 当我在 github 上为某个用户设置授权时 该存储库可在他 她自己的 github
  • 如何使用 git-tfs 清理损坏的历史记录

    我不确定我是如何进入这种状态的 但我的 tfs 默认远程分支中有一些 TFS 中不存在的提交 所以我想摆脱它们 所以我的历史是这样的 A B C D tfs default 但提交 B 和 C 实际上并不是 TFS 中的变更集 因此 当我签
  • Jenkins groovy - 如何从最新提交中检索标签?

    从中获取最新提交branchName 我们运行下面的代码 treeMapData git branch branchName credentialsId credential url gitLabServer projectName rep
  • git tag --contains 如何工作?

    从几天前开始 我一直在尝试确定在哪个版本 由标签指定 中部署了特定修复 由提交指定 这里的一些帖子发布了这一点git tag contains是收集这些信息的方法 但是选项的文档 https git scm com docs git tag

随机推荐

  • 微调预训练的 word2vec Google 新闻

    我目前正在使用在 Google 新闻语料库上训练的 Word2Vec 模型 来自here 由于仅在 2013 年之前对新闻进行训练 因此我需要更新向量 并根据 2013 年之后的新闻在词汇表中添加新单词 假设我在 2013 年之后有一个新的
  • 为什么移动 0 会截断小数?

    我最近发现了这段JavaScript代码 Math random 0x1000000 lt lt 0 我知道第一部分只是生成 0 到 0x1000000 16777216 之间的随机数 但第二部分似乎很奇怪 执行位移 0 有何意义 我不认为
  • 如果我从共享扩展打开包含应用程序,Apple 会拒绝吗?

    我正在使用提供的解决方案here从共享扩展中打开我的内容 尽管它很脆弱 但它似乎没有使用任何私有 API 方式来做到这一点 如果我使用我的应用程序 Apple 会拒绝它吗 有人拥有经过批准的应用程序 可以从共享扩展中打开包含应用程序的应用程
  • MySQL:截断表与从表中删除

    我们什么时候使用DELETE命令与TRUNCATE命令 我试图在互联网上查找 但两个命令都删除了数据 我看不出有什么区别 从表中删除 1 DELETE is a DML Command 2 DELETE statement is execu
  • F# 返回 ICollection

    我正在使用用 C 创建的库 我一直致力于将一些代码移植到 F 但必须使用 C 库中的相当多的基础类型 一段代码需要计算一个值列表并将其分配给类中的公共字段 属性 该字段是一个包含两个 ICollection 的 C 类 我的 F 代码工作正
  • 如何从 com.google.api.client.googleapis.json.GoogleJsonResponseException 上失败的 Cloud Dataflow 作业恢复: 410 Gone

    我的 Cloud Dataflow 作业在运行 4 小时后神秘地失败 因为工作人员抛出此异常四次 在一小时内 异常堆栈看起来像这样 java io IOException com google api client googleapis j
  • 当代码发生更改时,Visual Studio 2010 在运行前不会生成

    多年来我一直使用 F5 开始调试 来构建代码 如果它已经过时 然后进行调试 这也适用于 VS 2010 但是今天它只是在没有构建的情况下开始调试 假设我对项目进行了清理 然后按 F5 而不是构建它 以便它可以运行 它会抛出一条错误消息 指出
  • Angular 4 Form FormArray 添加按钮以添加或删除表单输入行

    我正在使用 Angular 4 0 2 构建一个应用程序 如何向表单添加按钮以添加新的输入行和删除按钮以删除特定行 我的意思是我想要一个像这样的表格 我希望我的表格看起来像这样 这是我的代码 添加发票 component html h3 c
  • 无法修改iframe的内容,什么问题?

    我正在尝试修改 iframe 的内容 但它不起作用 这是我的 main html h3 Main page h3
  • 为什么枚举与 Windows 中的位字段不兼容?

    我正在研究 Windows 和 Linux 的 EBDS 协议接口 我试图将协议所需的所有数据打包到结构中 然后将结构本身和所有其他内容写入串行端口 将其发送到设备 协议的第一部分是数据打包 其中一个包的部分是与以下描述相匹配的控制字节 B
  • 在 C++ 中扩展数组时出现问题

    我正在为课堂编写一个模拟 其中一部分涉及生物体的繁殖 我的生物体被保存在一个阵列中 当它们繁殖时我需要增加阵列的大小 因为我有多个生物体的多个类 所以我使用了一个模板 template
  • constexpr 用于派生类中空初始化的构造函数

    我有类似以下内容 class Base public explicit Base int i noexcept type new int type i constexpr Base std nullptr t type nullptr Ba
  • perf-report显示CPU寄存器的值

    我跟随这个文件并使用perf record with intr regs ax bx r15 尝试使用 PEBS 记录记录其他 CPU 寄存器信息 但是我如何从 perf data 查看这些信息 原来的命令是perf report 并且只显
  • 如何使用 XPath 选择器排除子节点?

    我有以下 HTML 片段 div class d1 p text br p div class d2 text div a class a1 a1 a a class a2 a2 a div 我想获取的内容d1类并排除a1 and a2使用
  • Ruby TCPServer 获取客户端IP地址

    这是我不起作用的脚本 只是挂起 require socket server TCPServer new 2000 loop do Thread start server accept do client sock domain remote
  • 如何使用 ng 风格的进度条

    我正在尝试用 ng 风格制作一个进度条 问题是 当我做到这一点时 进度滑块仅在中间移动 并且没有覆盖整个栏 进度条应该以小时为单位 例如 4h 5h 等 当我用 制作它时 它就可以工作 有人可以帮忙吗 这是我的代码 div class pr
  • R JSON UTF-8解析

    我在尝试用 R 解析俄语字母表的 JSON 文件时遇到问题 该文件如下所示 text type status text type status text type status 并且以UTF 8编码保存 我尝试了 rjson RJSONIO
  • 是什么阻止您编写特定于 ruby​​ 1.9 的代码? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 到目前为止 我只是使用 YARV ruby 1 9 作为比 ruby 1 8 更快的 ruby 实现 并确保我的所有代码都向后兼容 ruby 1 8 6 什么情况 如果有 阻止您
  • 是否可以使用 jax-ws 生成 xml,但不将其发送出去

    所以这是场景 我们有 PeopleSoft 希望从销售人员来回发送消息 不幸的是 PeopleSoft 没有像 wsimport 这样的工具 它可以使用 wsdl 并为您生成类 有一些东西会消耗 wsdl 但它所做的只是生成存根消息对象 开
  • 无法触发 git 子模块上的提交后 git hook

    我们使用带有多个子模块的 git 模块 为了让日常使用更方便 我想要一个 post commit 钩子 它会自动将子模块添加到 main super root git repo clone module 中的 git 索引中 例如git a