git - 以编程方式获取 bash 中 git 目录的路径(包括子模块)

标签 git bash git-submodules

是否可以通过编程方式找到 .git 目录的路径,包括子模块?

我正在尝试编写一个安装 git Hook 的脚本,但我找不到找到项目的 .git 目录的直接方法。理想情况下,它应涵盖以下情况:

  1. 项目根目录
  2. 在项目的子目录中
  3. 在项目中子模块的根目录
  4. 在项目中子模块的子目录中

我可以手动完成所有这些,但我宁愿不解析子模块的 .git 文件。

编辑:我也对 python 中的解决方案感兴趣。

最佳答案

git rev-parse --git-dir 似乎是你想要的。我刚刚用一个子模块测试了它:

cd mymodule
git rev-parse --git-dir  # --> .git
git submodule add ssh://.../path/to/mysubmodule
cd mysubmodule
git rev-parse --git-dir  # --> /home/.../mymodule/.git/modules/mysubmodule

这让我很惊讶,因为在mysubmodule 中有一个.git,但结果却是一个文件,内容如下:

gitdir: ../.git/modules/mysubmodule

关于git - 以编程方式获取 bash 中 git 目录的路径(包括子模块),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15146163/

相关文章:

linux - 读取命令选项在旧操作系统 Linux 上不可用。还有什么其他命令允许默认值

linux - 是否可以记录整个脚本?

git - 如何使用 gitweb 确定子模块 SHA-1?

github - 通过 Octokit.net 获取 Git repo 子模块的目标哈希/SHA?

git - 在 Git 中展平旧历史

git - 将特定的 git commit 从 master 移动到分支

linux - Git 空格/行结尾

ios - 在 GIT 上提交 Crashlytics 框架

linux - 如何使用 'cp'命令排除特定目录?

Git 子项目?