2

git fetch通过网络并从origin/master本地主机获取最新的快照。它不会合并,只是获取快照。如果git fetch我们这样做git status了,它会告诉我们(本地)master是领先还是落后origin/master

我想要的只是一个 git 命令,它只会告诉我们 (local) 的内容是否master等同于origin/master. 显然,它必须通过网络来确定,但它不应该打印任何关于其发现的消息(如输出git fetch或任何其他 git 命令),最后,只输出yes/true(如果等效)或no/false(如果不同)或其他东西相似的。

是否有任何 git 内部命令或 api 可以做到这一点?!

4

2 回答 2

4

您可以使用该-q标志来静音git fetch

git fetch -q
if [ "$(git rev-parse origin/master)" == "$(git rev-parse master)" ]; then
    echo yes
else
    echo no
fi
于 2012-10-06T23:02:10.687 回答
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:无法重定向/解析 'git fetch --dry-run' 命令的输出

于 2012-10-31T03:49:44.820 回答