如何在本地分支和远程分支之间看到diff
?
答案 0 :(得分:1251)
git diff <local branch> <remote>/<remote branch>
例如git diff master origin/master
或git diff featureA origin/next
当然要拥有所说的远程跟踪分支,首先需要git fetch
;并且您需要它以获得有关远程存储库中分支的最新信息。
答案 1 :(得分:432)
要更新远程跟踪分支,您需要先键入git fetch
,然后再输入:
git diff <masterbranch_path> <remotebranch_path>
您可以git branch -a
列出所有分支(本地和远程),然后从列表中选择分支名称(只需从远程分支名称中删除remotes/
。
示例:git diff master origin/master
(其中“master”是本地主分支,“origin / master”是远程,即origin和master分支。)
答案 2 :(得分:171)
第一种类型
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
答案 3 :(得分:99)
如果您在某个分支上,并且想要将其与您正在跟踪的上游分支进行比较,请使用
git diff @{upstream}
由this answer提供,specifying revisions的git文档包含:
<branchname>@{upstream}
,例如master@{upstream}
,@{u}
后缀@{upstream}
到分支机构(简称<branchname>@{u}
)是指 由branchname
指定的分支设置为构建的分支 顶部(配置branch.<name>.remote
和branch.<name>.merge
)。 缺少branchname
默认为当前的。{/ p>
答案 4 :(得分:43)
我更了解输出:
git diff <remote-tracking branch> <local branch>
告诉我将要删除的内容以及如果我推送本地分支将会添加什么。当然它是相同的,只是反过来,但对我来说更具可读性,我更容易看到将要发生的事情。
答案 5 :(得分:29)
简单方法:
git fetch
git log -p HEAD..FETCH_HEAD
这将首先从默认远程(原点)获取更改。克隆repo时会自动创建。您也可以明确:git fetch origin master
。
然后git log用于比较当前分支与刚刚获取的分支。 (-p
(生成补丁)选项显示差异。)
答案 6 :(得分:11)
让您的工作分支开发并希望区分本地开发分支和远程开发分支,这种情况下,语法应该像git diff remotes/origin/development..development
或
git fetch origin
git diff origin/development
答案 7 :(得分:11)
我就是这样做的。
#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>
这将比较您的本地分支与远程分支
答案 8 :(得分:9)
如果您要将当前分支与您想要的内容git pull
进行比较,这是一个速记答案。
git fetch
git diff FETCH_HEAD
第一个命令将确定哪个远程分支对应于当前分支。 FETCH_HEAD
引用中该计算的工件。然后第二个命令使用该引用比较与当前分支的比较。
答案 9 :(得分:8)
如果您想查看差异只是更改文件的名称,请使用:
git diff --name-status <remote-branch> <local-branch>
,
否则这将显示所有差异两个分支:
git diff <remote-branch> <local-branch>
答案 10 :(得分:8)
tl; dr :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
这里我有两个本地分支(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
要显示本地分支机构,您可能会尝试使用git branch -l
,但这是一个完全不同的命令。要显示本地分支,请使用git branch
没有选择
$ git branch
* my-branch
master
要完成对基本分支选项的审核,--list
与您的预期相反,允许过滤。使用这样的模式:
$ git branch --list 'my*'
* my-branch
您还可以将--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
文档:https://git-scm.com/docs/git-branch
现在你可以比较所有可用的分支(你也可以比较两个本地或两个遥控器)。
这里我将本地与远程my-branch
进行比较,它们是同步的,所以我没有得到任何输出:
$ git diff my-branch remotes/origin/my-branch
注意:您必须提供没有引号的分支的全名。
我还可以将本地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
[ . . . ]
答案 11 :(得分:6)
我知道这个问题已有几个答案,但在尝试大部分问题时我遇到了一个奇怪的错误。
在我的情况下,我有一个名为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
希望能帮助其他人解决同样的问题。
答案 12 :(得分:4)
git difftool <commit> .
这会将您想要的提交与本地文件进行比较。不要忘记最后的点(对于本地)。
例如,要将本地文件与某些提交进行比较:
git difftool 1db1ef2490733c1877ad0fb5e8536d2935566341。
(除非需要与新的提交进行比较,否则你不需要git fetch)
答案 13 :(得分:3)
实施例
R> DT <- data.table(x=letters[1:3], y=1:9)
R> DT[1,2]
y
1: 1
R> unlist(DT[1,2]) ## DF is a list of vectors, so start with `unlist)_`
y
1
R> unname(unlist(DT[1,2])) ## an `unname()`
[1] 1
R>
如果您使用的是像webstorm这样的编辑器,您可以右键单击文件选择与分支比较并输入/选择您的分支。
答案 14 :(得分:1)
在VS 2019中,只需抓取就不要提取代码。
这就是我所做的。 在.gitconfig文件中添加了以下内容,以便我可以使用Beyond Compare
File location: C:\Users\[username]\.gitconfig
添加到下方
[diff]
tool = bc
[difftool "bc"]
path = c:/Program Files/Beyond Compare 4/bcomp.exe
打开命令提示符,然后转到工作目录。我在下面给出了比较本地DEV分支与远程DEV分支的方法
git difftool dev origin/dev --dir-diff
这将打开“超越比较”并打开包含不同文件的目录。如果没有任何更改,将无法启动“超越比较”。
答案 15 :(得分:0)
git config alias.udiff 'diff @{u}'
git fetch # Do this if you want to compare with the network state of upstream; if the current local state is enough, you can skip this
git udiff
这回答了你标题中的问题(“它的遥远”);如果要对“远程”(未配置为分支的上游)进行区分,则需要直接对其进行定位。您可以使用以下内容查看所有远程分支:
git branch -r
您可以使用以下内容查看所有已配置的遥控器:
git remote show
您可以按如下方式查看单个遥控器(例如原点)的分支/跟踪配置:
git remote show origin
确定合适的原点分支后,只需执行正常的差异:)
git diff [MY_LOCAL] MY_REMOTE_BRANCH
答案 16 :(得分:0)
我想知道我的 master 分支是否有任何更改...
git checkout master
git状态
git branch -a
- 主人
遥控器/原点/主机
git diff起源/母版
答案 17 :(得分:0)
这很简单。您可以使用:git diff remote/my_topic_branch my_topic_branch
my_topic_branch
是您的主题分支。
答案 18 :(得分:0)
如果使用TortoiseGit(它为Git提供GUI),则可以右键单击Git存储库文件夹,然后单击Git Sync
。
如果未选择,则可以选择要比较的分支。比您可以查看差异提交。您也可以右键单击任何提交,然后Compare with previous revision
并排查看差异。
答案 19 :(得分:0)
假设您已经将origin
设置为远程存储库。然后,
git diff <local branch> <origin>/<remote branch name>
答案 20 :(得分:0)
在android studio中,可以使用图形界面查看分支之间的差异。选择您的远程分支,然后从列表中选择“与当前比较”。从那时起,您可以选择文件选项卡以查看两个分支之间是否存在内容有所不同的文件。如果看不到文件,则两个分支都是最新的。
答案 21 :(得分:0)
对于从HEAD到原始服务器/主服务器的不同提交的计数:
git remote update git rev-list HEAD..origin/master --count
要获取当前的HEAD提交哈希ID:
git rev-parse HEAD
要获取远程源/主提交哈希ID:
git rev-parse origin/master
答案 22 :(得分:-1)
尝试:
git diff origin HEAD
假设您想将当前本地分支的HEAD
与原点进行比较。
并假设您在本地分支机构中。 :)