如何检查本地和github之间的差异拉

在使用pull之前,我想检查我的本地和github主机之间是否有区别。

我该怎么做?

提前致谢。

git pull实际上等同于运行git fetch ,然后git mergegit fetch更新所谓的“远程跟踪分支” – 通常这些看起来像使用git branch -r看到的origin/mastergithub/experiment等等。 这些就像远程仓库中分支状态的caching,当你执行git fetch (或者一个成功的git push )的时候会被更新。

所以,假设你有一个引用你的GitHub仓库的远程调用的origin ,你可以这样做:

 git fetch origin 

…然后做:

 git diff master origin/master 

…为了看看你的master和GitHub上的人之间的区别。 如果你对这些差异感到满意,你可以把它们与git merge origin/master ,假定master是你当前的分支。

就个人而言,我认为分开做git fetchgit merge通常是一个好主意 。

如果你对git diff输出的细节不感兴趣,你可以运行git cherry ,它会输出你的远程跟踪分支在你的本地分支之前提交的列表。

例如:

 git fetch origin git cherry master origin/master 

将输出如下所示:

 + 2642039b1a4c4d4345a0d02f79ccc3690e19d9b1 + a4870f9fbde61d2d657e97b72b61f46d1fd265a9 

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

这也适用于其他方式:

  git cherry origin/master master 

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

另一个有用的命令(git fetch之后)是:

 git log origin/master ^master 

这显示了在起源/主,但不在主。 在做git pull时,你也可以做相反的事情来检查提交到远程的提交。