【问题标题】:Commit without changes提交而不更改
【发布时间】:2015-05-04 06:09:36
【问题描述】:

我有一个提交破坏了我的网站:

commit 7745ace83eff751025526b7a998406e5b5d1873d
Merge: 9e79649 09e570a
Date:   Thu Feb 19 17:07:03 2015 -0300

    Merge branch 'desarrollo' of git+ssh://192.168.1.200/home/git/project into dev

commit 9e79649a64ef9925655167a8e237d5fd36fad51e
Date:   Thu Feb 19 17:06:24 2015 -0300

    Comment. Blah... Blah...

 dir/file.inc        |    1 +
 db/file2.sql    |  327 ++++++-----------------------------------
 file3.php                      |    7 +-
 file4.php                     |    1 +
 admin/file5.php |    8 +
 admin/file6.php      |    6 +-
 admin/file7.php     |   12 +-
 7 files changed, 78 insertions(+), 284 deletions(-)

如果对提交 7745ace83eff751025526b7a998406e5b5d1873d 的更改,则该站点已损坏。 在提交 9e79649a64ef9925655167a8e237d5fd36fad51e 中,该站点没有该错误。

如何知道提交 7745ace83eff751025526b7a998406e5b5d1873d 中哪些文件发生了变化?

【问题讨论】:

标签: git merge commit


【解决方案1】:

您正在查看的提交是合并提交。它不一定具有与其他提交相同的“更改”。它是来自其他两个提交 9e7964909e570a 的更改的组合。

如果9e79649 中不存在该错误,我还会在尝试深入研究合并提交中的更改之前检查它是否存在于09e570a(合并的另一个父提交)中。

提交消息是常规合并的默认设置,因此看起来没有任何已解决的冲突。如果存在冲突,git 会将它们附加到提交消息中(前提是未使用 -m 选项)并且您会知道要查看哪些文件。

【讨论】:

    【解决方案2】:

    通常,git show COMMIT-ID 会显示提交 COMMIT-ID 引入的更改。

    但是,这个提交是一个特例,因为它是一个合并提交。对于合并提交,git show 将仅显示 相对于两个祖先提交(正在合并的提交)的更改。因此,如果合并完全解决(没有冲突),git show MERGE-COMMIT-ID 将不会显示任何内容。

    对于合并提交,您可以使用git diff,指定祖先提交和合并提交。在您的情况下,比较您命名的两个提交:

    git diff 9e79649 7745ace8
    

    对于git diffgit show,您可以使用参数--stat 仅查看更改摘要——这对于快速概览很有用。

    【讨论】:

    • git show 还支持 -m 选项,它可以满足您的期望。显示合并提交引入的更改的适当差异。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-09
    • 2018-07-04
    • 2021-08-30
    • 1970-01-01
    • 2017-09-09
    • 1970-01-01
    相关资源
    最近更新 更多