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


当前回答

这很简单。你可以使用:git diff remote/my_topic_branch my_topic_branch

其中my_topic_branch是您的主题分支。

其他回答

设置

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

Try:

git diff origin HEAD

假设你想要区分你当前本地分支的HEAD与原点。 假设你在本地分行。:)

我更理解输出:

Git diff <远程跟踪分支> <本地分支>

它告诉我,如果我推本地分支,什么将被删除,什么将被添加。当然,它是一样的,只是相反,但对我来说,它更可读,我更舒服地看着将要发生的事情。

在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将不会启动。

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

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)。 缺少的分支名默认为当前分支名。