【问题标题】:Programmatically get path to git directory in bash (including submodules)以编程方式获取 bash 中 git 目录的路径(包括子模块)
【发布时间】:2013-02-15 06:30:39
【问题描述】:

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

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

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

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

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

【问题讨论】:

标签: git bash git-submodules


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    This SO 问题使用git rev-parse --show-toplevel 查找顶级目录。

    【讨论】:

    • 这不会给你 .git 目录
    猜你喜欢
    • 1970-01-01
    • 2016-09-14
    • 2013-10-25
    • 2016-01-17
    • 1970-01-01
    • 2017-04-15
    • 2011-06-24
    • 2016-09-09
    • 2017-07-04
    相关资源
    最近更新 更多