在哪里可以找到由于`git fetch`而发生的变化

eps*_*nes 46 git pull git-fetch

我之后不想丢失一些信息git pull,所以我git fetch之前做过一次.我在哪里可以阅读新的修改git fetch?我去了FETCH_HEAD文件,但没有什么比一个大数字.

kos*_*tix 65

git fetch origin默认情况下,从名为"origin"的远程控件获取所有内容,并更新(或创建)该远程控制器的所谓"远程跟踪分支".比如,对于包含名为"master"和"feature"的git fetch remote分支的名为"origin"的远程,运行将导致名为"origin/master"和"origin/feature"的远程跟踪分支被更新(或创建,如果它们'不存在).你可以在输出中看到它们git branch -a(注意"-a").

现在,通常的Git设置是(某些)您的本地分支遵循某些远程分支(通常是同名).也就是说,您的本地"主"分支遵循"origin/master"等.

所以,在你获取之后,看看远程"master"与你当地的"master"相比,你要求Git向你展示:

git log origin/master ^master
Run Code Online (Sandbox Code Playgroud)

这意味着«所有提交可以从"origin/master"到达,不包括可以从"master"访问的提交»或者

git log master..origin/master
Run Code Online (Sandbox Code Playgroud)

具有相同的含义.有关详细信息,请参阅"gitrevisions"手册页,尤其是"指定范围"部分.另请参阅git-log手册页中的示例

您可以根据需要自由定制输出,git log因为它支持影响它的大量选项.

请注意,您的本地分支也可能具有匹配的远程分支不包含的提交(尚未).要获得它们的概述,您必须撤消传递给的修订git log(希望)明显的原因.

像往常一样,在开始使用工具之前,教育 自己理解基本概念至关重要.请做.

  • 没有提到"git diff master origin/master"的任何原因?它似乎很简单地解决了OP的问题......?(我对Git很新,所以如果错了请纠正我.) (10认同)
  • @Howiecamp:如果您向*您的`master`添加了提交,而这些提交是从*他们的`master`(您现在更新的`origin / master`)中获得的,则产生不同的结果。这不是一件错误的事情,但是它不会向您展示他们承诺您没有*(拥有您的`master`),而`git log`将会做到这一点。 (2认同)

Bar*_*end 6

尝试

git log --oneline --decorate origin/master
Run Code Online (Sandbox Code Playgroud)

这将为您提供来自远程控制器master顶部的更改日志origin(您可以根据需要替换任何其他远程分支机构)。您将获得类似以下的输出:

234121 (origin/master) Commit message 5
872373 Commit message 4
623748 Commit message 3
235090 (master) Commit message 2
192399 Commit message 1
Run Code Online (Sandbox Code Playgroud)

标记(master)为该提交的提交是您本地master分支的头。标记(origin/master)为该提交的提交是远程master分支的头。

  • 我认为更好的命令是-`git log --all --oneline --graph` (2认同)

Eli*_*lin 5

如果您只想查看执行GIT PULL将会修改哪些文件,请执行以下操作:

git fetch && git diff HEAD @{u} --name-only
Run Code Online (Sandbox Code Playgroud)

如果要查看当前版本与传入版本之间的所有差异,包括未提交的本地修改,请键入以下内容:

git fetch && git diff @{u} --name-only
Run Code Online (Sandbox Code Playgroud)