Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Bash中测试当前回购是否在Git之下_Git_Bash - Fatal编程技术网

在Bash中测试当前回购是否在Git之下

在Bash中测试当前回购是否在Git之下,git,bash,Git,Bash,基本上,在我的.bash_配置文件中,我希望有以下内容: [[ __gitdir ]] && echo 'foo' 如果_ugitdir为true和/或返回任何内容,我将回显foo。我尝试了一些方法,非常感谢您的帮助,谢谢 我想你想要 git rev-parse --show-toplevel &>/dev/null 虽然你问题的措辞让我有点困惑。当在Git repo中的任意位置运行时,它将成功(返回0),否则将失败(返回非零),但不会产生任何输出,因此对于使用

基本上,在我的.bash_配置文件中,我希望有以下内容:

[[ __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,它应该被修复。