如何区分本地分支和远程分支?


当前回答

我一直看到这个错误

git diff main origin/master
fatal: ambiguous argument 'main': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

解决方案:我必须先推git(因为远程和本地都需要是最新的),然后这样工作:

git diff master origin/master

其他回答

第一个类型

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

我就是这么做的。

# 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>

这将比较您的本地分支和远程分支。

如果你正在比较当前分支和你想要git拉的东西,这里有一个简单的答案。

git fetch
git diff FETCH_HEAD

第一个命令将找出与当前分支对应的远程分支。FETCH_HEAD引用中该计算的人工产物。然后,第二个命令使用该引用与当前分支的引用进行比较。

如果你在一个给定的分支上,并且你想要比较你的工作副本和你正在跟踪的上游分支,使用:

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 <本地分支> <origin>/<远程分支名称>