Jak*_*ski 1280
git diff <local branch> <remote>/<remote branch>
Run Code Online (Sandbox Code Playgroud)
例如git diff master origin/master
,或git diff featureA origin/next
当然,对已经表示远程追踪分支,你需要git fetch
先; 并且您需要它以获得有关远程存储库中分支的最新信息.
med*_*iev 524
要更新远程跟踪分支,您需要先键入git fetch
然后:
git diff <masterbranch_path> <remotebranch_path>
Run Code Online (Sandbox Code Playgroud)
您可以git branch -a
列出所有分支(本地和远程),然后从列表中选择分支名称(只需remotes/
从远程分支名称中删除).
示例:( git diff master origin/master
其中"master"是本地主分支,"origin/master"是远程,即origin和master分支.)
YSN*_*YSN 177
第一种
git branch -a
Run Code Online (Sandbox Code Playgroud)
获取可用分支列表.在输出上你可能会看到类似的东西
* master
remotes/main/master
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/mt
remotes/upstream/master
remotes/upstream/mt
Run Code Online (Sandbox Code Playgroud)
然后显示差异
git diff --stat --color remotes/main/master..origin/master
git diff remotes/main/master..origin/master
Run Code Online (Sandbox Code Playgroud)
And*_*imm 120
如果您在某个分支上,并且想要将其与您正在跟踪的上游分支进行比较,请使用
git diff @{upstream}
Run Code Online (Sandbox Code Playgroud)
<branchname>@{upstream}
例如master@{upstream}
,branchname@{u}
的后缀@{upstream}
(简短形式<branchname>@{u}
)是指指定的分支branchname
设置为在(使用branch.<name>.remote
和配置branch.<name>.merge
)之上构建的分支.缺少branchname
当前的默认值.
小智 44
我更了解输出:
git diff <remote-tracking branch> <local branch>
这告诉我什么将被删除,如果我推动本地分支将会添加什么.当然它是相同的,只是反过来,但对我来说更具可读性,我更容易看到将要发生的事情.
Bre*_*ust 30
简单的方法:
git fetch
git log -p HEAD..FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)
这将首先从默认远程(原点)获取更改.克隆repo时会自动创建.你也可以明确:git fetch origin master
.
然后git log用于比较当前分支与刚刚获取的分支.(-p
(生成补丁)选项显示了差异.)
Sah*_*dhi 13
我就是这样做的.
#To update your local.
git fetch --all
Run Code Online (Sandbox Code Playgroud)
这将从远程获取所有内容,因此当您检查差异时,它将比较远程分支的差异.
#to list all branches
git branch -a
Run Code Online (Sandbox Code Playgroud)
上面的命令将显示所有分支.
#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
Run Code Online (Sandbox Code Playgroud)
现在,您可以按如下方式检查差异.
git diff origin/<branch_name>
Run Code Online (Sandbox Code Playgroud)
这将比较您的本地分支与远程分支
Rat*_*der 11
让你的工作分支是开发,并希望区分本地开发分支和远程开发分支,那种情况下,语法应该是git diff remotes/origin/development..development
或者
git fetch origin
git diff origin/development
use*_*737 10
tl;博士:git diff <local branch> <remote branch>
在shell上使用git时,我喜欢首先通过环顾四周定位自己.这是显示所有分支的命令
$ git branch -a # (or git branch --all)
* my-branch
master
remotes/origin/some-branch
remotes/origin/HEAD -> origin/master
remotes/origin/my-branch
remotes/origin/some-other-branch
remotes/origin/master
Run Code Online (Sandbox Code Playgroud)
在这里,我有两个地方分支机构(my-branch
和master
)和4个远程(some-branch
,some-other-branch
,master
和my-branch
).
此外,旁边的星号my-branch
表示我当前在该分支中的事实(您还将通过使用git status
将输出的命令知道:) On branch my-branch.
.
注意:git bash shell中的远程分支以红色显示,而本地的分支以绿色显示.
如果您只想显示远程分支:
$ git branch -r # (or git branch --remotes)
origin/some-branch
origin/HEAD -> origin/master
origin/my-branch
origin/some-other-branch
origin/master
Run Code Online (Sandbox Code Playgroud)
要显示本地分支,您可能会想要使用,git branch -l
但这是一个完全不同的命令.为了显示当地分支机构使用git branch
不带任何选项
$ git branch
* my-branch
master
Run Code Online (Sandbox Code Playgroud)
要完成对基本分支选项的审核--list
,与您可能期望的允许过滤相反.使用这样的模式:
$ git branch --list 'my*'
* my-branch
Run Code Online (Sandbox Code Playgroud)
您还可以--list
与选项结合使用-a
,-r
但请确保相应地调整您的模式(请记住:远程分支以"遥控器"开头).例:
# this will show all branches (local & remote) that start with my
$ git branch --list 'my*' -a
* my-branch
# better: the pattern includes the remote
$ git branch --list '*my*' -a
* my-branch
remotes/origin/my-branch
Run Code Online (Sandbox Code Playgroud)
文档:https://git-scm.com/docs/git-branch
现在你可以比较所有可用的两个分支(你也可以比较两个本地或两个遥控器).
在这里我将本地与遥控器进行比较my-branch
,它们是同步的,所以我没有得到任何输出:
$ git diff my-branch remotes/origin/my-branch
Run Code Online (Sandbox Code Playgroud)
注意:您必须提供没有引号的分支的全名.
我也可以比较本地my-branch
和遥控器master
.这里我得到一些输出,因为遥控器my-branch
尚未合并到主分支中.
$ git diff my-branch remotes/origin/master
diff --git a/src/controllers/call.controller.js b/src/controllers/call.controller.js
index fd79b98..df3d798 100644
--- a/src/controllers/call.controller.js
+++ b/src/controllers/call.controller.js
@@ -261,7 +261,7 @@ function callController() {
/*
* Function: doCall
[ . . . ]
Run Code Online (Sandbox Code Playgroud)
如果你想看到区别只是更改文件的名称,那么使用:
git diff --name-status <remote-branch> <local-branch>
,
否则这将显示两个分支之间的所有差异:
git diff <remote-branch> <local-branch>
如果您要将当前分支与您想要的分支进行比较,这是一个速记答案git pull
.
git fetch
git diff FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)
第一个命令将确定哪个远程分支对应于当前分支.FETCH_HEAD
参考中该计算的工件.然后第二个命令使用该引用比较与当前分支的比较.
我知道这个问题已经有几个答案,但是在尝试大部分问题时我遇到了一个奇怪的错误.
在我来说,我有一个叫做第二个远程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 fetch
在运行之前明确提到远程名称git diff
,在我的情况下:
$ git fetch heroku
$ git diff master heroku/master
Run Code Online (Sandbox Code Playgroud)
希望能帮助其他人解决同样的问题.
git difftool <commit> .
Run Code Online (Sandbox Code Playgroud)
这会将您想要的提交与您的本地文件进行比较。不要忘记最后的点(对于本地)。
例如,将您的本地文件与某些提交进行比较:
git difftool 1db1ef2490733c1877ad0fb5e8536d2935566341。
(并且您不需要 git fetch,除非需要与新提交进行比较)