【问题标题】:git fetch origin doesnt tell me what files have been updatedgit fetch origin 没有告诉我哪些文件已更新
【发布时间】:2016-08-13 07:42:18
【问题描述】:

当我使用 git fetch origin 时,我会收到这样的消息:

remote: Counting objects: 7, done.
remote: Total 7 (delta 5), reused 5 (delta 5), pack-reused 2
Unpacking objects: 100% (7/7), done.
From http://xxx/xxx
   ee28fb0..fdca511  master     -> origin/master

但是,它并没有告诉我哪些文件确实像 svn up 那样发生了变化。

我需要在这里使用什么?

【问题讨论】:

标签: git


【解决方案1】:

您从一个不正确的前提开始,因为git fetch 故意更新任何文件。这是故意的:它允许您随时git fetch,因为它永远不会触及您可能正在处理的任何文件。 git fetch 所做的是向您的存储库添加更多提交,而不会影响工作区中实际签出的任何内容。 (如果你熟悉星际迷航下一代系列中的这些恶棍,Git 更像 Borg:你将新提交的技术独特性添加到你的 git-borg 集体。你用 git 做的大多数事情最终都会添加新的提交,旧的提交将永远存在。)

问题是 在您 git fetch 之后,您通常会运行 git merge,或者通常更合适的是 git rebase。这些命令影响您的工作区文件,现在是时候询问会发生什么变化了。 (Git 鼓励与 svn 不同的工作流程,git rebasesvn up 不完全相同,但可能是您想要的。如果您从未进行任何更改,git merge --ff-only 可能就是您想要的想要在这里,但git rebase 会达到相同的结果。)

因为 git 允许甚至鼓励复杂的分布式工作流程(您和许多其他人都或多或少地同时进行许多更改),查看谁的更改会影响可能变得复杂的内容。但是,如果您自己从未进行任何更改,我们会得到一个更简单的情况,通过一种易于使用的方式来查看您刚刚从其他地方获得的内容,以及 git rebasegit merge --ff-only 会做什么。

很可能,您想要的是git diff --stat,如Mort answered。如果你使用git merge(有或没有--ff-only),git 会在完成后为你运行一个git diff --stat。此差异需要两个修订 ID,并将与第一个修订关联的树与与第二个修订关联的树进行比较。棘手的部分是选择修订 ID。从git fetch 的输出中复制它们是可行的,但很烦人。

以下是一种无需这种复制即可获得相同结果的不同方法:

git diff --stat origin/master@{1} origin/master

(取决于您的外壳,您可能需要引用花括号)。

名称 origin/master@{1} 告诉 git 获取在最近更新之前存储在 origin/master 中的值。这将是显示的第一个哈希 git fetch,在本例中为 ee28fb0...

名称 origin/master 告诉 git 获取当前值,这就是 git fetch 刚刚设置的值:在本例中为 fdca511...

这样做的好处是,您可以通过比较 origin/master@{2}origin/master@{1}origin/master 来回到更远的时间。

您还可以将master(您自己的分支)与以下任何一个进行比较:

git diff origin/master@{1} master

这将显示您在 您的 master 中所做的更改,与您在运行 git fetch 之前您的 origin/master 中的任何内容相比。 (添加--stat 以获得汇总版本而不是完整差异。)或者:git diff master origin/master 将向您展示您所拥有的与您刚刚获得的不同的东西。如果您从不进行自己的更改,那就是“他们从那时起所做的事情”。如果您确实进行了自己的更改,您将需要查看您和他们的 merge base,这是 rebase 和/或 merge 真正发挥作用的地方,但这是完全是另一个话题。

【讨论】:

    【解决方案2】:

    查看输出。您可以运行 git diff --stat ee28fb0...fdca511 以在 master 上更改文件。 (或git log ee28fb0..fdca511等)

    问题是,git fetch 可以更新很多很多参考。因此,当您真正关心的是 master 时,您并不总是希望看到功能分支和 QA 分支中的所有更新。

    【讨论】:

      猜你喜欢
      • 2021-04-23
      • 1970-01-01
      • 2013-03-20
      • 2015-04-29
      • 2016-08-06
      • 1970-01-01
      • 1970-01-01
      • 2010-11-19
      • 2021-06-30
      相关资源
      最近更新 更多