我有一个 git 项目,多年来,它最终出现了不一致的行尾。我想创建一个新分支,签出初始提交,修改它以.gitattributes
确保 .c、.cpp、.h、.hpp 文件使用 LF 行尾。然后,我想简单地挑选所有剩余的提交。这显然失败了,因为当我挑选提交时,每个文件现在看起来都被修改为 git。手动执行此操作不是一个选择,因为我现在有近 1000 次提交。
自动化方法是什么?我猜想其中一种方法是通过哈希合并所有冲突来自动挑选,按原样挑选,然后在所有文件上运行 dos2unix,然后使用本地更改修改最后一次提交。但即使这样也不容易正确完成。有什么可以完成这项任务的吗?
安装
git-filter-repo
,将其添加到并在新克隆上$PATH
运行(或进行备份):更新:已接受的解决方案效果很好,而且速度非常快。它重建历史记录以清理整个结账过程
下面的代码因删除文件而失败。
我尝试向 deep seek 寻求解决方案。像往常一样,它不起作用,从来都不起作用。但它给了我一个可以调试的脚本(至少可以作为开始)。最后,这个版本似乎对我有用:
也许,可以减少 git 命令的所有日志记录,让它变得不那么冗长。有什么建议/改进吗?