【问题标题】:Mark file as "renamed" when squashing commits压缩提交时将文件标记为“重命名”
【发布时间】:2016-11-17 06:18:44
【问题描述】:

当我在存储库中移动跟踪文件时,git 在提交信息中显示“文件 xxx 从 yyy 重命名”。

现在我正在尝试压缩两个提交,其中文件在第一次提交中被删除并在第二次提交中再次添加(在不同的目录中)。在结果提交中,我没有看到“重命名”,只有“删除”和“添加”。

如何帮助 git 理解这一点并为这个文件显示“重命名”?

【问题讨论】:

    标签: git


    【解决方案1】:

    Git 动态发现(检测)重命名,在它进行比较时

    有许多选项可以控制 Git 是否尝试,如果是,它认为“足够相似”以使其认为文件已重命名。

    如何让 Git 以重命名的形式呈现某些内容取决于:

    • 您的 Git 版本。 2.9 及更高版本默认为git diff 开启重命名检测。
    • 您正在使用的命令。 Git 已默认为 git merge 启用重命名检测,即使在旧版本的 Git 中也是如此。 git status 命令总是进行重命名检测。
    • 文件的相似性。完全匹配很容易,并且最常被找到。
    • 提供给命令的选项。例如,请参阅Git doesn't detect rename when file has been modified significantly after move。这些也取决于命令;例如,虽然git status 始终启用检测,但它没有配置阈值。
    • 配置条目(在您的全局 Git 配置和/或您的每个存储库配置中)。您可以通过设置diff.renames 覆盖Git 的git diff 启用/禁用默认值,并通过设置diff.renameLimit 覆盖其重命名检测队列中的最大文件数。

    关于git diff 的重命名检测(特别是 Git 用于跨两次提交确定文件身份的方法)的(更多)更多信息,请参阅Git Diff of same files in two directories always result in "renamed"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-16
      • 1970-01-01
      • 2014-12-07
      • 2012-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多