由于 `git fetch` 导致的更改在哪里找到?

78

我做了git fetch,是因为我不想在git pull之后失去某些信息。在git fetch之后,我应该在哪里阅读新的修改内容? 我查看了FETCH_HEAD文件,但里面只有一个大数字,没有其他内容。


3
你是否能访问gitk?如果可以,运行gitk --all可以查看本地计算机上所有分支的当前状态,包括通过fetch更新的分支。 - creemama
尝试使用 git show object 命令,其中 object 是一个大的哈希值... - Prince John Wesley
gitk 命令可以正常工作,但是 gitk all 命令不行。(顺便说一句,我没有明确说明远程仓库不是由我更改的)。在 gitk 窗口中,没有文件指示获取的数据。 - epsilones
谢谢,git show 命令运行正常!!最好的祝福,Newben - epsilones
4个回答

107
默认情况下,git fetch origin 会获取名为“origin”的远程仓库中的所有内容,并更新(或创建)所谓的“远程跟踪分支”。比如,对于名为“origin”的远程仓库,其中包含名为“master”和“feature”的分支,运行git fetch origin将导致更新(或创建,如果它们不存在)名为“origin/master”和“origin/feature”的远程跟踪分支。你可以在git branch -a (注意是“-a”)的输出中看到它们。
现在,通常的Git设置是你本地的某些分支跟随特定的远程分支(通常是同名的)。也就是说,你的本地“master”分支跟随“origin/master”等等。
因此,在你完成fetch操作后,想要查看远程“master”与你本地“master”之间的差异,你需要向Git明确地发出以下命令:
git log origin/master ^master
这意味着“所有从‘origin/master’可达的提交,但不包括从‘master’可达的提交”,或者说。
git log master..origin/master

具有相同含义,请参见“gitrevisions”手册页面了解更多信息,特别是“指定范围”部分。另请参见git-log手册页中的示例。

您可以自由地自定义git log的输出,因为它支持许多影响其选项。

请注意,您本地的分支可能也有提交,但匹配的远程分支不包含(尚未)。出于(希望)明显的原因,要获取它们的概述,您必须颠倒传递给git log的修订版本。

通常,在开始使用工具之前,重要的是要学习理解基本概念。请务必这样做。


17
为什么“git diff master origin/master”没有被提到呢?它似乎能够非常简单地回答OP的问题...?(我对Git比较新,正在学习,如果我有错请指出。) - Howiecamp
4
如果你在你的master分支上添加了提交记录,而这些提交记录并非来自于他们的master分支(即你已经更新的origin/master分支),那么它将会产生不同的结果。这样做并没有错,但它将无法显示出*他们在你的master分支中拥有的提交记录,而git log命令则恰好能够做到这一点。 - torek

17

如果您只想查看在执行GIT PULL后将被修改的文件,请执行以下操作:

git fetch && git diff HEAD @{u} --name-only

如果您想查看当前版本和即将到来的版本之间的所有差异,包括未提交的本地修改,请输入以下内容:

git fetch && git diff @{u} --name-only

1
我曾经有同样的问题,后来在这里找到了答案:https://dev59.com/uWIk5IYBdhLWcg3wN7xj。简而言之:`它是一个快捷方式,用于引用当前分支正在跟踪的上游分支`。 - Lunfel

12

尝试一下

git log --oneline --decorate origin/master

这将为您提供来自origin远程仓库的master分支的变更日志(您可以根据需要替换为其他远程分支)。您将会得到类似于以下的输出:

234121 (origin/master) Commit message 5
872373 Commit message 4
623748 Commit message 3
235090 (master) Commit message 2
192399 Commit message 1

标记为 (master) 的提交是您本地 master 分支的最新版本。标记为 (origin/master) 的提交则是远程的 master 分支的最新版本。


5
我认为更好的命令是 - git log --all --oneline --graph - andrejs82
这显示的提交记录比我上次合并当前本地头后所做的提交记录更多。git log 的工作方式有变化吗? - Bernhard Döbler

0

我通常使用git log origin/master来查看远程仓库的日志。 你可以像这样比较更改:git diff master origin/master ,它将比较主分支与远程仓库中你的主分支的更改。


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