Git未检测到大型重命名操作
我对项目中的所有根文件夹进行了重新命名。Smartgit将所有文件视为丢失且未跟踪。当我提交时,其中一些在日志中被标记为Git未检测到大型重命名操作,git,batch-rename,smartgit,Git,Batch Rename,Smartgit,我对项目中的所有根文件夹进行了重新命名。Smartgit将所有文件视为丢失且未跟踪。当我提交时,其中一些在日志中被标记为重命名,但其中很多没有。我不想失去这些文件与fork source的连接。我不更改文件中的任何内容,只是重命名所有根文件夹和其中的一些文件 我通过Total Commander mass rename功能执行重命名。用git mv手动重命名这些文件需要很长时间 我可以做些什么来帮助git检测重命名 更新 我发现它只在最近添加的文件上检测到重命名,而这些文件在fork源代码中并不
重命名
,但其中很多没有。我不想失去这些文件与fork source的连接。我不更改文件中的任何内容,只是重命名所有根文件夹和其中的一些文件
我通过Total Commander mass rename功能执行重命名。用git mv
手动重命名这些文件需要很长时间
我可以做些什么来帮助git检测重命名
更新
我发现它只在最近添加的文件上检测到重命名,而这些文件在fork源代码中并不存在
更新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存储库,在存储库中导入一些代码(使用复制/粘贴或其他方式),批量重命名,尝试提交。就这样?