【问题标题】:Git log history simplification, elaborations example in git log's manualgit log 历史简化,git log 手册中的详细说明示例
【发布时间】:2016-02-01 15:03:07
【问题描述】:

你们都对 git log 简化历史的帮助中的示例和详细说明感到满意吗? 在使用本帮助/手册和命名示例时,我遇到了一些理解负担。

  .-A---M---N---O---P---Q
 /     /   /   /   /   /
I     B   C   D   E   Y
 \   /   /   /   /   /
  `-------------'   X
  • I 是初始提交... foo 存在内容“asdf”,文件 quux 存在内容“quux”...。
  • 在 A 中,foo 仅包含“foo”...
  • B 包含与 A 相同的更改...
  • C 不会改变 foo,但它的合并 N 会将其更改为“foobar”...
  • P 对 O 来说是树形的...
  • 是否包含与任何父项中不存在的更改合并的感觉? 在 git log 的帮助中查看 merge 的 N 描述
  • 文件的 quux 在从 O 到合并 P 的转换过程中经历了一些修改,为什么帮助限定 P 与 O 的树相同?

看起来术语 TREESAME 和 !TREESAME 可以在单个文件/目录的范围内看到。不用于表示多个文件的提交属性。这是真的吗?

【问题讨论】:

    标签: git history git-log simplification


    【解决方案1】:

    描述中的 TREESAME 表达式应用于每个提交的树(成对比较)从您的 git log 命令执行任何特定于文件的过滤之后。例如:

    git log --simplify-merges
    

    比较每个树中的每个文件以确定两个提交树是否“相同”,而:

    git log --simplify-merges -- README
    

    仅比较每棵树中的 README 文件,并且:

    git log --simplify-merges -- README dir1 dir2
    

    在比较树之前将README 和树中两个目录中的所有文件保留。

    【讨论】:

    • git log 帮助中提到的示例和详细说明对文件过滤没有任何限制。它只讲述了两个文件,所以我假设在这些阐述中不考虑过滤。我的问题仍然悬而未决。
    • 我知道文档没有说明这一点,但这就是实际发生的情况:在进行 TREESAME 比较之前,git 有效地丢弃了您指定为不相关的树的任何部分(通过列出您认为相关的部分) .如果不列出任何部分,git 会比较未修改的树,即一切都是相关的。
    • 这个答案以及来自 torek 的附加评论回答了我的问题。谢谢。
    猜你喜欢
    • 2011-10-08
    • 2023-01-30
    • 2020-12-18
    • 1970-01-01
    • 2019-07-28
    • 2012-11-07
    • 1970-01-01
    • 2018-08-08
    • 2019-08-09
    相关资源
    最近更新 更多