在Bash中测试当前回购是否在Git之下
基本上,在我的.bash_配置文件中,我希望有以下内容:在Bash中测试当前回购是否在Git之下,git,bash,Git,Bash,基本上,在我的.bash_配置文件中,我希望有以下内容: [[ __gitdir ]] && echo 'foo' 如果_ugitdir为true和/或返回任何内容,我将回显foo。我尝试了一些方法,非常感谢您的帮助,谢谢 我想你想要 git rev-parse --show-toplevel &>/dev/null 虽然你问题的措辞让我有点困惑。当在Git repo中的任意位置运行时,它将成功(返回0),否则将失败(返回非零),但不会产生任何输出,因此对于使用
[[ __gitdir ]] && echo 'foo'
如果_ugitdir为true和/或返回任何内容,我将回显foo。我尝试了一些方法,非常感谢您的帮助,谢谢 我想你想要
git rev-parse --show-toplevel &>/dev/null
虽然你问题的措辞让我有点困惑。当在Git repo中的任意位置运行时,它将成功(返回0),否则将失败(返回非零),但不会产生任何输出,因此对于使用&&
链接或使用if
非常有用
请注意,这不在[…]
测试中,例如
git rev-parse --show-toplevel &>/dev/null && echo "$PWD is in a Git repo." || echo "$PWD is not in a Git repo."
将宣布当前工作目录是否在Git回购中 我想你想要
git rev-parse --show-toplevel &>/dev/null
虽然你问题的措辞让我有点困惑。当在Git repo中的任意位置运行时,它将成功(返回0),否则将失败(返回非零),但不会产生任何输出,因此对于使用&&
链接或使用if
非常有用
请注意,这不在[…]
测试中,例如
git rev-parse --show-toplevel &>/dev/null && echo "$PWD is in a Git repo." || echo "$PWD is not in a Git repo."
将宣布当前工作目录是否在Git回购中 我就是这么做的。不完全证明,但它已经为我工作了一段时间
if [ -d .git ]
我就是这么做的。不完全证明,但它已经为我工作了一段时间
if [ -d .git ]
这是:
git rev-parse --quiet --git-dir
这实际上是Git在Git-sh.setup.sh中为其shell脚本使用的内容。这是:
git rev-parse --quiet --git-dir
这实际上是Git在Git-sh.setup.sh中使用自己的shell脚本。这比使用(\uu gitdir&>/dev/null&&echo“foo”)有什么好处?两者似乎都有效。谢谢你抽出时间!哦,我甚至没有意识到
\uu gitdir
是一个文本函数!我以为这只是你编的一个名字,你在寻找这样一个函数的实现。但是,我仍然认为git rev parse
方法更好,因为它更健壮:它不依赖于安装git完成。事实上,与(uu gitdir&>/dev/null&&echo“foo”)相比,这有什么好处?两者似乎都有效。谢谢你抽出时间!哦,我甚至没有意识到\uu gitdir
是一个文本函数!我以为这只是你编的一个名字,你在寻找这样一个函数的实现。但是,我仍然认为git rev parse
方法更好,因为它更健壮:它不依赖于安装git完成。事实上,.是这样做的(然后也使用or../.git),但我认为在几个级别之后效率会很低(我计划每次更改目录时都运行这个),这与\uu gitdir
不同。\uu gitdir
命令似乎相当于git rev parse--top-level
。也就是说,\uuu gitdir
在PWD位于Git repo下的任何位置时都会成功,而[-d.Git]
只在Git repo的顶层工作。对,我希望它在目录中的所有级别(或者至少,比方说,5个级别)都能成功(然后也使用or../.Git)进行操作),但我认为在几个级别之后效率会很低(我计划在每次更改目录时运行此命令)这与\uuuugitdir
不同。\uuuugitdir
命令似乎相当于git rev parse--top-level
。也就是说,\uuuugitdir
在PWD位于git repo的任何位置时成功,而[-d.git]
只在Git回购的顶层起作用。对,我希望所有人都能使用它(或者至少,比如说,5)请注意,--quiet
实际上并没有使命令安静!?!?它应该。IIRC你是对的,但这是一个bug,它应该被修复。请注意,--quiet
实际上并没有使命令安静!?!?它应该。IIRC你是对的,但这是一个bug,它应该被修复。