如何在拉取之前检查local和github之间的差异

时间:2011-05-14 09:20:59

标签: git github

在使用pull之前,我想检查本地和github主服务器之间是否存在任何差异。

我该怎么做?

3 个答案:

答案 0 :(得分:204)

git pull实际上相当于运行git fetch然后git mergegit fetch会更新您所谓的“远程跟踪分支” - 通常这些分支看起来像origin/mastergithub/experiment等,您可以使用git branch -r查看。这些类似于远程存储库中分支状态的缓存,当您执行git fetch(或成功git push)时会更新。

因此,假设您有一个名为origin的远程引用您的GitHub存储库,您可以这样做:

git fetch origin

...然后执行:

git diff master origin/master

...以便了解您的master与GitHub上的差异。如果您对这些差异感到满意,可以将其与git merge origin/master合并,假设master是您当前的分支。

就我个人而言,我认为分别执行git fetchgit merge通常是a good idea

答案 1 :(得分:33)

如果您对git diff输出的详细信息不感兴趣,您可以运行git cherry,这将输出您的远程跟踪分支在您的本地分支之前提交的提交列表。

例如:

git fetch origin
git cherry master origin/master

将输出如下内容:

+ 2642039b1a4c4d4345a0d02f79ccc3690e19d9b1
+ a4870f9fbde61d2d657e97b72b61f46d1fd265a9

表示我的远程跟踪分支中有两个提交尚未合并到我的本地分支。

这也是另一种方式:

    git cherry origin/master master

将向您显示尚未推送到远程存储库的本地提交列表。

答案 2 :(得分:7)

执行此操作的另一个有用命令(在git fetch之后)是:

git log origin/master ^master

这显示了origin / master中的提交但不是master中的提交。 你也可以在做git pull时在对面做,检查将提交给远程的提交。