【问题标题】:How do I show the files that where merged with a no fast-forward in Git?如何在 Git 中显示与非快进合并的文件?
【发布时间】:2011-03-15 18:34:16
【问题描述】:

我有两个分支,我正在将 branch1 合并到 branch2 中,没有快进。

合并后,我运行命令“git show”,我只得到提交的消息(这是从没有快进的合并)并且没有列表文件发生了变化。

如何在合并中更改列表文件?

已解决:

合并后在 branch2 时,我使用了以下内容:

git diff HEAD~

这返回了正确的结果。

【问题讨论】:

  • 我认为以下两个答案都表明很难准确解释您的要求 - 添加一个 ASCII-art 提交图可能有助于显示您希望查看哪些提交之间的差异.
  • 不是像上面那样添加 SOLVED ,而是为您自己的问题添加一个答案。你不会得到有趣的接受点,但至少人们会知道你的意图和你找到的答案。

标签: git fast-forward


【解决方案1】:

您尝试过git whatchanged 命令吗? (未测试):

git whatchanged --oneline

git whatchanged --oneline ..HEAD^
git whatchanged --oneline ..HEAD^2

--oneline

这是“--pretty=oneline --abbrev-commit”的简写。

我需要查看所有在 branch1 中更改并合并到 branch2 的文件。

branch2 在这里可以用 HEAD 的第二个父级 HEAD^2 表示。

至于“只是文件列表”:

git diff --name-status ..HEAD^2

应该只给你一个文件列表及其相关状态。

【讨论】:

  • 这给了我所有提交的所有更改,与“git log”相同。我需要的是查看合并到分支 2 的分支 1 中更改的所有文件。
  • @chafnan:你试过'--oneline'和HEAD^2(应该代表branch2)。请参阅我的更新答案。
【解决方案2】:

合并后在 branch2 时,我使用了以下内容:

git diff HEAD~

这返回了正确的结果。

【讨论】:

    【解决方案3】:

    完成合并后,检查git reflog 的输出,它跟踪分支的尖端所在的位置。第一行应该是您的合并提交,第二行应该是 branch2 在合并之前的位置。如果看起来正确,您可以从该输出的第二列中看到之前的提交可以称为HEAD@{1},因此要查看合并更改了哪些文件,您可以这样做:

    git diff --stat HEAD@{1}
    

    【讨论】:

    • 这让我更接近,但 branch1 有多个提交。如何获得所有提交的差异?
    • 所以您希望看到branch1branch2 中的所有文件从它们分流到合并时都发生了变化?如果是这样,并且假设您的分支仍在合并提交中,我认为您可以使用 git diff --stat $(git merge-base HEAD^1 HEAD^2)
    猜你喜欢
    • 2016-10-20
    • 2015-07-22
    • 2014-01-28
    • 1970-01-01
    • 2012-05-25
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    相关资源
    最近更新 更多