如何查看本地git repo和远程repo是否是同一个提交?

时间:2012-06-24 16:43:47

标签: git github

我有一个本地git repo,我有一个远程git repo。什么是一个简单的命令来查看提交远程仓库的是什么,以及本地仓库的提交是什么,所以我可以简单地看看我是否是最新的?

这将在一个程序中自动执行,所以我不想要很多复杂的东西,我将不得不解析。优选地,具有本地和本地两者都是很酷的。远程输出相同的文本,只有两者之间的提交更改。有什么想法吗?

2 个答案:

答案 0 :(得分:6)

程序化解决方案

如果您需要程序化解决方案,可以查看存储在每个头中的提交并进行比较。例如:

remote=$(
    git ls-remote -h origin master |
    awk '{print $1}'
)
local=$(git rev-parse HEAD)

printf "Local : %s\nRemote: %s\n" $local $remote

if [[ $local == $remote ]]; then
    echo "Commits match."
else
    echo "Commits don't match."
fi

样本输出

Local : 9e1b4dc286acb442f7f604be7916db660b9d70cd
Remote: 9e1b4dc286acb442f7f604be7916db660b9d70cd
Commits match.

答案 1 :(得分:1)

假设您的远程存储库由远程origin引用,并且您对分支master感兴趣,则可以执行以下操作:

git fetch origin

然后比较输出:

git rev-parse master

......和:

git rev-parse origin/master

如果这两个命令输出的对象名称相同,那么mastermaster中的origingit fetch origin时相同跑了。