比较本地git分支与远程分支?

我如何看到本地分支和远程分支之间的diff

 git diff <masterbranch_path> <remotebranch_path> 
 git diff <local branch> <remote>/<remote branch> 

例如git diff master origin/master ,或git diff featureA origin/next

当然要说远程跟踪分支你需要首先git fetch ; 而且您需要具有有关远程存储库中分支机构的最新信息。

第一类

 git branch -a 

得到可用分支的列表。 在输出上,你可能会看到类似的东西

 * master remotes/main/master remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/mt remotes/upstream/master remotes/upstream/mt 

然后显示差异

 git diff --stat --color remotes/main/master..origin/master git diff remotes/main/master..origin/master 

如果你在一个给定的分支上,并且想要将它与正在跟踪的上游分支进行比较,请使用

 git diff @{upstream} 

提供这个答案 ,用于指定修订的git文档具有:

<branchname>@{upstream} ,例如master@{upstream}@{u}
branchname(简称<branchname>@{u} )的后缀@{upstream}引用branchname指定的branchname被设置为基于branch.<name>.remotebranch.<name>.mergeconfiguration的branch.<name>.merge )。 缺less的branchname默认为当前的。

我明白了更好的输出:

git diff <remote-tracking branch> <local branch>

告诉我将要丢弃什么,如果我推入本地分支,将会添加什么。 当然,它也是一样的,只是相反的,但对我来说更具可读性,而且我更容易看待将要发生的事情。

简单的方法:

 git fetch git log -p HEAD..FETCH_HEAD 

这将首先从您的默认远程(原点)获取更改。 这将在您克隆回购时自动创build。 你也可以显式的: git fetch origin master

然后使用git log来比较你当前的分支和刚刚获取的分支。 ( -p (生成补丁)选项是显示差异的 。)

让你的工作分支是发展,并要区分本地开发分支和远程开发分支,这种情况下,语法应该像git diff remotes/origin/development..development
要么

git fetch origin git diff origin/development

这是我如何做到的。

 #To update your local. git fetch --all 

这将从远程获取所有东西,所以当你检查差异时,它将比较远程分支的差异。

 #to list all branches git branch -a 

上面的命令将显示所有的分支。

 #to go to the branch you want to check difference git checkout <branch_name> #to check on which branch you are in, use git branch (or) git status 

现在,你可以检查差异如下。

 git diff origin/<branch_name> 

这会比较你的本地分支和远程分支

如果你正在比较你当前的分支和你想要git pull东西,这里是一个简短的答案。

 git fetch git diff FETCH_HEAD 

第一个命令将确定哪个远程分支对应于您当前的分支。 FETCH_HEAD参考中的计算工件。 然后第二个命令使用参考比较与你当前的分支。

如果你想看到不同的文件的名称更改然后使用:
git diff --name-status <remote-branch> <local-branch>
否则这将显示两个分支之间的所有差异:
git diff <remote-branch> <local-branch>

我知道这个问题已经有几个答案了,但是在尝试其中的大部分时,我却遇到了一个奇怪的错误。

在我的情况下,我有第二个远程调用heroku ,这不是 origin ,因为它不同步我试图运行git diff master heroku/master时得到这个错误:

fatal: ambiguous argument 'heroku/master': unknown revision or path not in the working tree.

或者在尝试其他的方法时git diff master..heroku/master

fatal: bad revision 'master..heroku/master'

解决方法是在运行git diff之前明确提到git fetch的远程名称,在我的情况下:

 $ git fetch heroku $ git diff master heroku/master 

希望能帮助别人解决这个问题。

 git difftool <commit> . 

这将比较你想要的提交和本地文件。 不要忘记最后的点(对于本地)。

例如,比较你的本地文件和一些提交:

git difftool 1db1ef2490733c1877ad0fb5e8536d2935566341。

(你不需要git fetch,除非需要比较新的提交)

 git diff 'master' 'testlocalBranch' 

如果您使用的是类似webstorm的编辑器,您可以右键单击文件select与分支比较,然后键入/select您的分支。

在这里输入图像说明

在这里输入图像说明