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


当前回答

我一直看到这个错误

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拉的东西,这里有一个简单的答案。

git fetch
git diff FETCH_HEAD

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

要更新远程跟踪分支,你需要先输入git fetch,然后:

git diff <mainbranch_path> <remotebranch_path>

您可以git branch -a列出所有分支(本地和远程),然后从列表中选择分支名称(只需从远程分支名称中删除remotes/即可)。

例如:git diff main origin/main(其中“main”是本地主分支,“origin/main”是远程分支,即原点和主分支。)

设置

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

git diff <local branch> <remote>/<remote branch>

例如,git diff main origin/main,或者git diff feat尿素origin/next

当然,说到远程跟踪分支,你首先需要git fetch;并且您需要它拥有关于远程存储库中分支的最新信息。

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