如何在Git中显示本地文件和远程文件之间的差异?

9

由于我刚接触 Git,所以在开始使用时遇到了一些困难(Git 版本为 2.12.3)。

我在服务器上创建了一个文件(在 GitLab 中),可以将其克隆到本地目录中。

git clone git@gitlab.server.com:/joe/myproject.git

一切都很好,我有文件的本地副本。但是当我从别人那里或在服务器上更改远程文件时,即使这些更改在主机上清晰可见,我也无法在本地客户端上跟踪或查看这些更改。并没有。

git diff file1

或者

git diff origin/master

还是其他什么。

我必须获取文件,合并它,然后才能看到新编辑的内容。在获取新文件之前,是否可能观察和检测到新的更改?


1
要查看其他人所做的更改,您需要执行 git pull 命令以获取他们的更改。只有这样,您才能将其与您所做的更改进行比较。 - Lix
@Lix,由于“pull”包含“fetch”和“merge”,我会更改本地源,但在进行此类更改之前,我会先调查差异。 - Coliban
2
你可以直接运行 git fetch origin 然后 git diff master..origin/master -- myfile.txt 来比较你的文件。 - user4691348
@efkin,那个有效了,谢谢你! - Coliban
@Coliban,我把评论写成回答的形式是为了让其他人也受益。我想DanielTrugman的答案也已经足够了。请随意接受其中一个。 - user4691348
3个回答

9
我会这样做:
git fetch origin master

然后我会执行:

git diff master origin/master

更简单的说,要查看本地和远程仓库之间的差异,语法如下:
git diff <masterbranch> <remotebranch>

还有一个git difftool命令,如果你安装了UI环境,它会在UI环境中显示差异。我很少用这个命令,所以对我来说这是一个未知领域。玩得开心。


1
@Mortensen -- 我已经删除了错误的陈述,即git pull等同于git fetch和git diff。它等同于git fetch和git merge。 - Ribo

7

在获取新文件之前,是否可能观察和检测到新变化?

不可能,如果你没有获取这些变化,你的本地仓库是不知道它们的。

我必须获取文件,合并它,然后才能看到新编辑的内容。

你只需要获取它,不必合并!

比较

如果你想比较一个本地路径和远程路径,请使用:

git diff <repo>/<branch> -- <path>

例如:

git diff origin/master -- program.cpp
--- OR ---
git diff origin/master -- Utils/*

1
这就是应该被接受的答案。 - javaistaucheineinsel
fatal: bad revision 'origin/master' - xyf
@xyf,这是因为你的分支可能没有命名为“master”。只需使用正确的分支名称即可。 - Daniel Trugman

3
为了达到您的目的,您至少需要从远程仓库中fetch。之后,在您进行merge之前,只有在您的branch和您的origin/branch之间进行diff才能实现。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接