Git未检测到大型重命名操作

Git未检测到大型重命名操作,git,batch-rename,smartgit,Git,Batch Rename,Smartgit,我对项目中的所有根文件夹进行了重新命名。Smartgit将所有文件视为丢失且未跟踪。当我提交时,其中一些在日志中被标记为重命名,但其中很多没有。我不想失去这些文件与fork source的连接。我不更改文件中的任何内容,只是重命名所有根文件夹和其中的一些文件 我通过Total Commander mass rename功能执行重命名。用git mv手动重命名这些文件需要很长时间 我可以做些什么来帮助git检测重命名 更新 我发现它只在最近添加的文件上检测到重命名,而这些文件在fork源代码中并不

我对项目中的所有根文件夹进行了重新命名。Smartgit将所有文件视为丢失且未跟踪。当我提交时,其中一些在日志中被标记为
重命名
,但其中很多没有。我不想失去这些文件与fork source的连接。我不更改文件中的任何内容,只是重命名所有根文件夹和其中的一些文件

我通过Total Commander mass rename功能执行重命名。用
git mv
手动重命名这些文件需要很长时间

我可以做些什么来帮助git检测重命名

更新

我发现它只在最近添加的文件上检测到重命名,而这些文件在fork源代码中并不存在

更新2

我创建了两个克隆来测试这种行为

  • 更改了一个文件,提交并推入克隆1
  • 在克隆2中执行了重命名、提交和拉取
  • 现在我在克隆2中遇到了一个重定基冲突。看起来它实际上检测到了重命名,但为什么会发生冲突呢


    Git不会在提交时跟踪重命名[1],但总是动态计算重命名。因此,你对此无能为力。另见:


    [1]

    重要的是我是否可以在新的fork提交后重新设置基础。我发现git只在最近添加的文件上检测到重命名,而这些文件在fork源代码中并不存在。你说的“fork源代码”到底是什么意思?您能给出一些重命名检测无法按预期工作的示例吗?我创建了一个github存储库,进行了一些提交,现在我想在下一次提交中重命名整个项目。但问题是,如果git没有在日志中显示重命名,我认为当我从原始项目中提取新提交时,它将无法正确地重新设置基址。如果一些文件在那里被更改了,那么这些更改就不会出现在我的分叉项目中,因为git认为有新文件和已删除的文件,但没有重命名。这实际上是可能发生的。另一方面,如果文件真的只是重命名了,而内容没有更改,那么所有文件都应该在日志中显示为“重命名”。无论如何,如果您想从GitHub存储库进一步同步,那么最好先创建一个GitHub存储库,然后重命名所有内容。我已经尝试将
    BclHelpers.cs
    重命名为
    BclHelpers2.cs
    ,就像您所做的那样。此文件的问题是,在重命名之前,它与CRLF一起存储在存储库中,并在重命名之后转换为LF。SmartGit不会为其重命名检测执行行尾规范化。要解决此问题,请对原始存储库的新克隆使用
    git config core.autocrlf false
    ,然后执行移动/重命名。现在,内容将完全相同,并且重命名检测也适用于SmartGit。因此,您可以这样做:使用源代码创建git存储库,在存储库中导入一些代码(使用复制/粘贴或其他方式),批量重命名,尝试提交。就这样?