在使用pull之前,我想检查本地和github主服务器之间是否存在任何差异。
我该怎么做?
答案 0 :(得分:204)
git pull
实际上相当于运行git fetch
然后git merge
。 git fetch
会更新您所谓的“远程跟踪分支” - 通常这些分支看起来像origin/master
,github/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 fetch
和git 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时在对面做,检查将提交给远程的提交。