如何区分本地分支和远程分支?
当前回答
设置
Git配置别名。Udiff 'diff @{u}'
带HEAD@{upstream}的差动HEAD
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远程显示
你可以看到单个远程(例如origin)的分支/跟踪配置如下:
Git远程显示来源
一旦你确定了适当的起源分支,只需做一个正常的diff:)
git diff [MY_LOCAL] MY_REMOTE_BRANCH
其他回答
我就是这么做的。
# To update your local.
git fetch --all
这将从远程获取所有内容,因此当您检查difference时,它将与远程分支进行比较。
# 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>
这将比较您的本地分支和远程分支。
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拉的东西,这里有一个简单的答案。
git fetch
git diff FETCH_HEAD
第一个命令将找出与当前分支对应的远程分支。FETCH_HEAD引用中该计算的人工产物。然后,第二个命令使用该引用与当前分支的引用进行比较。
我想知道我的主分支是否有任何变化…
首先,你需要改变你的分支(如果你已经在这个分支下,你不需要这样做!): Git checkout master 你可以通过下面的命令查看在你的主分支下哪个文件被修改了: git状态 列出分支 Git分支-a 主 遥控器/产地/主人 发现差异 Git差异的起源/主
简单的方法:
git fetch
git log -p HEAD..FETCH_HEAD
这将首先从默认远程(origin)获取更改。这将在克隆存储库时自动创建。你也可以显式:git fetch origin master。
然后git log用来比较你当前的分支和刚刚获取的分支。(-p(生成补丁)选项显示了差异。)
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- 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之间的区别