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

Jas*_*son 6 git bash git-submodules

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

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

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

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

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

Rea*_*ted 5

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
Run Code Online (Sandbox Code Playgroud)

这让我感到惊讶,因为有一个.gitin mysubmodule,但它结果是一个文件,包含以下内容:

gitdir: ../.git/modules/mysubmodule
Run Code Online (Sandbox Code Playgroud)