git fetch
通过网络并从origin/master
获取最新快照到本地主机。它不合并但只是获取快照。如果我们git fetch
,git status
之后,它会告诉我们(本地)master
是在origin/master
之前还是之后。master
。
我想要的只是一个git命令,只会告诉我们(本地)origin/master
的内容是否等同于git fetch
的内容。显然,它必须通过网络来确定它,但它不应该打印任何有关其发现的消息(如yes/true
或任何其他git命令的输出),最后,只输出no/false
(如果等效)或{{1}}(如果不同)或类似的东西。
有没有git内部命令或api可以做到这一点?!
答案 0 :(得分:4)
您可以使用-q
标记来隐藏git fetch
:
git fetch -q
if [ "$(git rev-parse origin/master)" == "$(git rev-parse master)" ]; then
echo yes
else
echo no
fi
答案 1 :(得分:0)
我终于使用了以下代码片段。
output=`git fetch --dry-run 2>&1`
if [ "$output" != "" ]; then
echo "***********************************************"
echo "* ERROR *"
echo "* Your git source directory is not up to date *"
echo "***********************************************"
fi
解析git fetch --dry-run
的输出时遇到问题,但发现控制台消息属于stderr
Git: unable to redirect/parse the output of 'git fetch --dry-run' command