如何获取当前目录相对于git存储库根目录的路径?
我已经看到了,它告诉我们如何获取特定文件相对于git repo根的路径。但是我现在想得到当前目录的路径,而不是一个特定的文件。如果我使用如何获取当前目录相对于git存储库根目录的路径?,git,bash,Git,Bash,我已经看到了,它告诉我们如何获取特定文件相对于git repo根的路径。但是我现在想得到当前目录的路径,而不是一个特定的文件。如果我使用 git ls-tree --full-name --name-only HEAD . 我得到目录中所有文件的列表 这可能吗 #git ls-files --full-name | xargs -L1 dirname | sort -u 使用git rev parse--show prefix,awesome,怎么样 $ git rev-parse --s
git ls-tree --full-name --name-only HEAD .
我得到目录中所有文件的列表
这可能吗
#git ls-files --full-name | xargs -L1 dirname | sort -u
使用git rev parse--show prefix,awesome,怎么样
$ git rev-parse --show-prefix
从mangit rev parse
:
--show-prefix
When the command is invoked from a subdirectory, show
the path of the current directory relative to the top-level
directory.
在Arkadiusz Drabczyk的基础上,我将建议的命令包装在一个shell脚本中(称为rd.sh,代表“相对目录”或“存储库目录”),如果git rev parse--show prefix
命令不返回任何内容(在顶层),则将其打印“/”。我现在才开始使用它,所以我们来看看它是如何工作的
#!/bin/bash
# rd.sh: shows the "repository directory" rather than the entire absolute dir from 'pwd'
RELATIVE_DIR=`git rev-parse --show-prefix`
if [ -z "$RELATIVE_DIR" ]; then
echo "/"
else
echo $RELATIVE_DIR
fi
你是在寻找一种阅读路径的方法吗?您不想使用
pwd
命令有什么原因吗?@BrianaSwift因为我想要的是相对于git repo根的路径,而不是机器上的绝对路径。例如,如果我有一个repo位于/home/ewok/git/repo
,并且pwd
将打印/home/ewok/git/repo/src/java
,我想要一个命令,它只会给我/src/java
,这会给我当前目录,但也会递归地给我所有子目录,这并不完全正确。有时它给我当前目录,有时它只给我子目录。我不知道什么时候它能让这更好?git ls文件——全名| head-1 | xargs-L1 dirname | sort-unope。现在它只给出了一个目录,但它给出的目录似乎并不一致。git rev parse--show prefix
是我将放在工具带中的一个命令。