35

我正在编写一个 bash 脚本,我需要一个测试来查看给定的远程是否存在。

假设,具体来说,我想测试遥控器是否faraway存在。如果我推动了一些事情faraway,我可以做到if [ -d .git/refs/remotes/faraway ]; then ...。但据我所见,faraway即使.git/refs/remotes/faraway不存在,别名仍然可以定义。

另一种选择是解析输出git remote并查看是否faraway出现在那里。但我想知道是否有一种更简单的方法来检查是否faraway已定义,无论是否.git/refs/remotes/faraway/存在。

4

3 回答 3

48

一个想法:您可以在git ls-remote faraway. 这实际上将强制与远程通信,而不是仅仅在本地寻找它的存在或不存在。

if git ls-remote --exit-code faraway; then
    ....
fi
于 2012-08-29T03:59:05.183 回答
38

检查是否faraway的另一种方法定义在.git/config

if git config remote.faraway.url > /dev/null; then
  …
fi

要检查是否faraway 未定义,请在条件前加上!

if ! git config remote.faraway.url > /dev/null; then
  …
fi
于 2014-11-10T11:53:22.057 回答
11

如果远程定义在 中.git/config,您可以避免使用 ping 远程服务器git remote

if git remote | grep faraway > /dev/null; then
  ...
fi
于 2014-04-29T01:30:06.303 回答