git - 如何在pu之前检查local和github之间的差异

这个问题在这里已有答案:

  • 克隆和原始远程存储库之间的git diff                                     3个答案

在使用pull之前,我想检查一下我的local和github master之间是否有任何差异。

我该怎么做?

shin asked 2019-08-12T02:07:01Z
3个解决方案
202 votes

git pull实际上相当于运行git fetch然后运行git merge.git fetch更新您所谓的"远程跟踪分支" - 通常这些看起来像origin/master,github/experiment等,您可以看到git branch -r。这些就像远程存储库中分支状态的缓存,当您执行git fetch(或成功的git push)时会更新。

所以,假设您有一个名为git fetch的遥控器引用您的GitHub存储库,您可以这样做:

git fetch origin

......然后做:

git diff master origin/master

...为了看到你的git fetch和GitHub上的那个之间的区别。 如果您对这些差异感到满意,可以将它们与git merge合并,假设您当前的分支是master

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

Mark Longair answered 2019-08-12T02:07:44Z
33 votes

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

例如:

git fetch origin
git cherry master origin/master

将输出如下:

+ 2642039b1a4c4d4345a0d02f79ccc3690e19d9b1
+ a4870f9fbde61d2d657e97b72b61f46d1fd265a9

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

这也适用于另一种方式:

    git cherry origin/master master

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

braitsch answered 2019-08-12T02:08:42Z
7 votes

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

git log origin/master ^master

这显示了origin / master中的提交但不是master中的提交。在执行git pull时,您也可以在对面执行此操作,以检查将提交给远程的提交。

peter pan gz answered 2019-08-12T02:09:16Z
translate from https://stackoverflow.com:/questions/6000919/how-to-check-the-differences-between-local-and-github-before-the-pull