如何检查本地和github之间的差异拉
在使用pull之前,我想检查我的本地和github主机之间是否有区别。
我该怎么做?
提前致谢。
git pull
实际上等同于运行git fetch
,然后git merge
。 git fetch
更新所谓的“远程跟踪分支” – 通常这些看起来像使用git branch -r
看到的origin/master
, github/experiment
等等。 这些就像远程仓库中分支状态的caching,当你执行git fetch
(或者一个成功的git push
)的时候会被更新。
所以,假设你有一个引用你的GitHub仓库的远程调用的origin
,你可以这样做:
git fetch origin
…然后做:
git diff master origin/master
…为了看看你的master
和GitHub上的人之间的区别。 如果你对这些差异感到满意,你可以把它们与git merge origin/master
,假定master
是你当前的分支。
就个人而言,我认为分开做git fetch
和git 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时,你也可以做相反的事情来检查提交到远程的提交。