Git:如何查找origin / master是否等同于(local)master?

时间:2012-10-06 22:55:08

标签: git git-diff git-fetch git-status

git fetch通过网络并从origin/master获取最新快照到本地主机。它不合并但只是获取快照。如果我们git fetchgit status之后,它会告诉我们(本地)master是在origin/master之前还是之后。master

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

有没有git内部命令或api可以做到这一点?!

2 个答案:

答案 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