在第一次推送之前检查git remote是否存在

时间:2012-08-29 03:23:32

标签: git bash

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

假设具体,我想测试远程faraway是否存在。如果我将某些内容推送到faraway,我可以if [ -d .git/refs/remotes/faraway ]; then ...。但据我所知,即使faraway不存在,仍可以定义别名.git/refs/remotes/faraway

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

3 个答案:

答案 0 :(得分:33)

一想法:您可以在git ls-remote faraway上测试退出状态。这实际上会强制与遥控器进行通信,而不是仅仅在本地查找它的存在与否。

git ls-remote --exit-code faraway
if test $? = 0; then
    ....
fi

答案 1 :(得分:26)

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

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

答案 2 :(得分:10)

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

if git remote | grep faraway > /dev/null; then
  ...
fi