比较本地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>.remote
和branch.<name>.merge
configuration的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您的分支。