有没有等效的命令,总是返回绝对路径?
git rev-parse --git-path hooks
当我在子模块中时,我会得到一个绝对路径,但当我在根存储库中时,我会得到`.git/hooks`。
有没有等效的命令,总是返回绝对路径?
git rev-parse --git-path hooks
Git v2.13.0新增了--absolute-git-dir
选项:
$ git rev-parse --absolute-git-dir
/Users/torek/...snip.../.git
但不包括 --absolute-git-path
,正如您所指出的,--git-path
产生相对结果:
$ git rev-parse --git-path hooks
.git/hooks
如果您已经安装了Git 2.13,您可以使用sh/bash环境变量前缀方法将它们合并:
$ GIT_DIR=$(git rev-parse --absolute-git-dir) git rev-parse --git-path hooks
/Users/torek/...[snip].../.git/hooks
readlink -f
。$ GIT_DIR=$(readlink -f $(git rev-parse --git-dir)) git rev-parse --git-path hooks
/home/vagrant/...snip.../.git/hooks
git rev-parse
"(man) 可以被明确地告知使用 --path-format=(absolute|relative)
选项输出绝对或相对路径。
因此,如果您想确保输出绝对路径:
git rev-parse --path-format=absolute --git-path hooks
查看commit fac60b8,commit be6e0da(2020年12月13日)由brian m. carlson (bk2204
)提交。
(由Junio C Hamano -- gitster
--在commit 9ba366f中合并,2021年1月15日)
rev-parse
:添加绝对或相对路径格式选项签名作者:brian m. carlson
git rev-parse
(man)有几个选项可以打印各种路径。realpath(1)
的shell脚本环境和Go中,缺少适当规范化Windows上路径的函数,因此无法规范化路径。git rev-parse
打印的大多数路径变成相对于当前工作目录或绝对且规范的路径。git rev-parse
现在在其手册页面中包含:
--path-format=(absolute|relative)
控制某些其他选项的行为。
- 如果指定为绝对路径,则这些选项打印的路径将是绝对路径和规范路径。
- 如果指定为相对路径,则路径将相对于当前工作目录(如果可能)。
默认值是特定于选项的。此选项可以多次指定,并且仅影响在命令行上跟随它的参数,直到命令行的末尾或下一个此选项实例。
以下选项由
--path-format
修改:
git rev-parse
现在在其手册页面中包含:
--show-toplevel
显示工作树的顶层目录(默认情况下为绝对路径)。
如果没有工作树,则报告错误。
git rev-parse
现在在其手册页面中包括:
--path-format
影响:
--absolute-git-dir
类似于 --git-dir
,但其输出始终为规范化的绝对路径。
--is-inside-git-dir
当当前工作目录在仓库目录下方时,输出 "true",否则输出 "false"。
--is-inside-work-tree
当当前工作目录在仓库的工作树内时,输出 "true",否则输出 "false"。
--is-bare-repository
当仓库是裸仓库时,输出 "true",否则输出 "false"。
--is-shallow-repository
当仓库是浅克隆时,输出 "true",否则输出 "false"。
--show-cdup
当命令从子目录调用时,显示相对于当前目录的顶级目录路径(通常是一系列 "../" 或者空字符串)。
--show-prefix
当命令从子目录调用时,显示相对于顶级目录的当前目录路径。
警告:"rev-parse
" 命令未诊断 "--path-format
" 选项缺少参数的问题,该选项在 v2.31 时代引入:这已在 Git 2.32 (2021 年第二季度) 中得到纠正。
请参见 提交 99fc555(2021 年 5 月 17 日),作者为 Wolfgang Müller (wylfen
)。
(由 Junio C Hamano -- gitster
-- 合并于 提交 99fe1c6,2021 年 5 月 22 日)
rev-parse
:修复缺少--path-format
参数导致的段错误签名作者:Wolfgang Müller
调用 "git rev-parse --path-format
"(man) 时,如果没有参数会导致段错误而不是给出错误消息。rev-parse
: add option for absolute or relative path formatting", 2020-12-13, Git v2.31.0-rc0 -- merge listed in batch #2) 添加了参数解析代码,但忘记处理 NULL
。错误信息现在将准确显示为:
fatal: --path-format requires an argument
readlink
,path=$(readlink -e "`git rev-parse --git-path hooks`")
应该可以完成。 如果你想要像--absolute-git-dir
rev-parse 参数一样创建一个--absolute-git-path
,我认为一个好的补丁会被接受。 - jthill--absolute-git-dir
,但是遇到了一些问题。当我运行git rev-parse --absolute-git-dir
时,它只会打印出--absolute-git-dir
。你知道为什么吗?不过readlink
的解决方案似乎有效,谢谢! - Scotty Hreadlink -nf
比我上面展示的readlink -e
更好。 - jthillgit rev-parse --path-format=absolute --git-path hooks
命令。请查看我的回答。 - VonC