让 git 忽略重命名 [重复]

Posted

技术标签:

【中文标题】让 git 忽略重命名 [重复]【英文标题】:Make git ignore rename [duplicate] 【发布时间】:2012-03-27 09:00:27 【问题描述】:

我有一个要删除的文件foo.txt,还有一个要添加的bar.txt。如果这两个文件有超过 50% 的内容相同,Git 会认为 foo.txt 被重命名为 bar.txt。我怎样才能让 Git 在不更改全局阈值检测 % 的情况下,在同一次提交中真正将其视为单独删除、单独添加。

谢谢!

【问题讨论】:

是否有特殊原因将其记录为“重命名”是一个问题? 问题是这两个文件的历史不应该混合在一起。假设我有一个名为 JohnDoe.txt 的文件,其中包含 John 的工作地址和电话号码 555-555-1212。 John 在 Jane Smith 加入公司的同时离开公司(创建文件 JaneSmith.txt)。她的工作地址是一样的,但电话号码是 555-555-1313。如果这两个 add/rm 是同一个提交的一部分,Git 会认为它是一个重命名,git log --follow 会告诉我它们是同一个文件(当我显然不希望它们是)。有什么建议吗? @poke 我不清楚重复的工作原理。我的问题是在您确定的问题前一年提出的。你会选择“最完整”的答案吗? @torngat 另一个问题之前已关闭指向这个问题,但我相信另一个问题更好地涵盖了 Git 行为背后的共鸣,所以我颠倒了方向(关闭这个问题指向另一个一个代替)。但别担心,一个问题被关闭通常不是一件坏事。您的问题仍然很好并将继续引导人们找到解决方案。 【参考方案1】:

你不能。在内部,它们将被保存为删除和添加。 “重命名”的显示将在稍后计算并取决于该阈值。

【讨论】:

【参考方案2】:

要使用 TortoiseGit 禁用重命名检测(尽管作为 git-diff 选项,它本身也应该适用于 git)我在 gitconfig 中添加了以下行,这似乎可以解决问题(虽然基于文档,但我认为不应该):

[diff]
  renameLimit = 1

【讨论】:

以上是关于让 git 忽略重命名 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 Git 中重命名文件后没有预期的日志 [重复]

如何重命名本地git和GitHub中拼写错误的分支[重复]

在本地和远程重命名 Git 分支? [复制]

如何让文件自动重命名?

将具有重命名中继历史的SVN仓库导入Git

如何重命名 .git 目录?