如何查看本地分支和远程分支之间的diff
?
git diff <local branch> <remote>/<remote branch>
例如,git diff main origin/main
,或者git diff featureA origin/next
当然,要说“远程跟踪分支”,你需要先执行git fetch
命令;并且你需要它具有关于远程存储库中分支的最新信息。
git diff <remote>/<远程分支> <本地分支>
命令来查看我要推送的更改对远程仓库会产生哪些影响。 - Michał Tatarynowiczgit diff origin
就足够了。 - Luddergit fetch
,这会给像我这样的新手带来麻烦。 - Saifgit diff @{upstream}
,对吗?不论我当前在哪个分支,git diff origin
总是显示 origin/master
。 - carejgit fetch
,然后执行以下操作:git diff <mainbranch_path> <remotebranch_path>
您可以使用git branch -a
来列出所有分支(本地和远程),然后从列表中选择分支名称(只需从远程分支名称中删除remotes/
即可)。
例如:git diff main origin/main
(其中“main”是本地主分支,“origin/main”是一个远程分支,即原始分支和主分支。)
git fetch
)。 - Houssam Badri[diff] tool = vscode [difftool] prompt = false [difftool "vscode"] cmd = \"C:\\Program Files (x86)\\Microsoft VS Code\\Code.exe\" \"$LOCAL\" \"$REMOTE\" --diff --wait trustExitCode = false
确保您的 code.exe 文件路径正确。 - Aman如果你在特定分支上,并且想要将你的工作副本与你正在跟踪的上游分支进行比较,请使用:
git diff @{upstream}
如果您想将当前的 HEAD与上游分支进行比较(感谢@Arijoon):
git diff @ @{upstream}
如果您的上游未设置,您可以使用@{push}
来获取与您设置为推送到的分支的差异(也来自@Arijoon的评论):
git diff @{push}
由此答案提供的,用于指定版本的Git文档有以下内容:
<branchname>@{upstream}
,例如master@{upstream}
,@{u}
将后缀@{upstream}
添加到分支名(短格式:<branchname>@{u}
)是指该分支构建在另一个分支之上(由branch.<name>.remote
和branch.<name>.merge
配置)。如果未指定branchname
,则默认为当前分支。
git diff @ @{upstream}
。额外的@
是指HEAD
,也就是您现在所在的位置,因此您正在比较HEAD
与上游分支跟踪的分支。您可以使用@{push}
代替upstream来获取要推送到的分支之间的差异。 - Arijoongit diff @\\{origin\\}
以使其部分工作。然而,即使我更改了一个提交,差异仍为空白,我知道这不应该是这样的。所以,不,这个答案根本不起作用。 - Hi-Angel@{push}
是我正在使用的部分。 - Arthur Weborg第一种类型
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
...
而不是 ..
吧? - Eliran Malkagit log origin/my_branch..
,这将以本地引用的 HEAD
作为参考,这通常是你想要的。 - Rudiegit diff remotes/origin/<base branch> <current branch> -- <filename>
非常好用。 - Steve Bonds我更好地理解了以下命令的输出:
git diff <remote-tracking branch> <local branch>
这会显示出如果我推送本地分支会被删除和添加的内容。当然,它是相同的,只是相反的,但对我来说更易读,我更舒适地查看将要发生的事情。
简单的方法:
git fetch
git log -p HEAD..FETCH_HEAD
首先, Git 会从你默认的远程仓库(origin)获取更改。当你克隆一个仓库时,这个远程仓库会自动创建。你也可以显式地指定: git fetch origin master
。
然后使用 git log
命令来将你当前分支和刚刚获取的分支进行比较。(-p
选项用于显示差异)。
简述:: git diff <本地分支> <远程分支>
在使用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
),以及四个远程分支(some-branch
、some-other-branch
、master
和 my-branch
)。
此外,星号表示我当前在my-branch
分支上(您也可以通过使用命令git status
来了解这一点,它会输出:On branch my-branch。
)
注意:在Git Bash中,远程分支以红色显示,而本地分支以绿色显示。
如果只想显示远程分支:
$ 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
结合使用,但一定要相应地调整模式(记住:远程分支以 "remotes" 开头)。例如:
# 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
文档: 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
[ . . . ]
这是我做事的方式。
# 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
参考。然后第二个命令使用该参考值来比较与您当前分支的情况。FETCH_HEAD
正是我所缺少的。只有一个小细节:如果你想以最后一个本地提交作为基线,并查看在远程仓库中发生了什么变化,请运行 git diff HEAD FETCH_HEAD
。 - bgusach让你的工作分支为development,并且你想区分本地开发分支和远程开发分支。在这种情况下,语法应该是这样的:
git diff remotes/origin/development..development
或者
git fetch origin
git diff origin/development
git diff HEAD origin/HEAD
,但它似乎指向了一个与我预期不同的远程分支。使用完整的分支名称可以按预期工作。 - Deanna