如何区分本地分支和远程分支?
当前回答
TLDR: git diff <本地分支> <远程分支>
当在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)和四个远程分支(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
为了完成对基本分支选项的回顾,有一个——列表,与您可能期望的相反,它允许过滤。使用它的模式如下:
$ 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分支
现在您可以比较所有可用分支中的任意两个分支(还可以比较两个局部分支或两个远程分支)。
这里我比较了本地的和远程的my-branch。它们是同步的,所以我没有得到任何输出:
$ git diff my-branch remotes/origin/my-branch
注意:您必须给出分支的全名,不带引号。
我还可以将本地my-分支与远程主服务器进行比较。这里我得到了一些输出,因为远程my-分支还没有合并到主分支中。
$ 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
[ . . . ]
其他回答
如果你在一个给定的分支上,并且你想要比较你的工作副本和你正在跟踪的上游分支,使用:
git diff @{upstream}
如果你想比较你当前的HEAD和上游分支(谢谢@Arijoon):
git diff @ @{upstream}
如果你的上游没有设置,你可以使用@{push}来获得一个与你设置推送的分支的差异(也来自@ arijoon的评论):
git diff @{push}
由于这个答案,git文档指定的修订有:
<branchname>@{upstream},例如master@{upstream}, @{u} 后缀 @{upstream}指向一个分支名(简称<branchname>@{u})的指 由branchname指定的分支所要构建的分支 顶部(配置了分支。<name>.)远程和分支。<name>.merge)。 缺少的分支名默认为当前分支名。
我更理解输出:
Git diff <远程跟踪分支> <本地分支>
它告诉我,如果我推本地分支,什么将被删除,什么将被添加。当然,它是一样的,只是相反,但对我来说,它更可读,我更舒服地看着将要发生的事情。
在我的情况下,我有一个名为heroku的第二个远程,这不是起源,因为它不同步,我在试图运行git diff master heroku/master时得到了这个错误:
致命:模糊的参数“heroku/master”:未知的修订或路径不在工作树中。
或者当尝试其他方法git diff master. heroku/master:
致命:糟糕的修订'master..heroku/master'
解决方案是在运行git diff之前显式地在git fetch中提到远程名称,在我的情况下:
$ git fetch heroku
$ git diff master heroku/master
这很简单。你可以使用:git diff remote/my_topic_branch my_topic_branch
其中my_topic_branch是您的主题分支。
在Visual Studio 2019中,只需要进行取回。不要拉代码。
这就是我所做的。我在.gitconfig文件中添加了以下内容,以便我可以使用Beyond Compare
File location: C:\Users\[username]\.gitconfig
添加以下
[diff]
tool = bc
[difftool "bc"]
path = c:/Program Files/Beyond Compare 4/bcomp.exe
打开命令提示符并进入工作目录。下面是本地开发分支和远程开发分支的比较:
git difftool dev origin/dev --dir-diff
这将打开Beyond Compare并打开包含不同文件的目录。如果没有任何变化,Beyond Compare将不会启动。
推荐文章
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别
- GitHub -致命:无法读取用户名https://github.com':没有这样的文件或目录
- 撤消git平分错误
- 使用.gitconfig配置diff工具