我试图将一个特定项目的历史快照放入git的历史记录中。我是通过将存储库目录填充为每个快照的内容,然后运行
git add -A .
git commit -m 'Version X'
这是这个答案中推荐的方法。但是我看到提交只有当文件内容保持100%相同时才会识别文件重命名。有没有办法影响git commit
的重命名检测,让它在文件内容稍有改动时也能找到重命名呢?我看到git merge
和git diff
有各种选项来控制重命名阈值,但是这些选项在git commit
中并不存在。我尝试过以下事情:
- 使用自制脚本查找重命名文件,将原始文件重命名为其新位置,然后提交新的文件内容前进行提交。但是,这样会引入人为的提交,并且似乎不够优雅,因为它没有使用git的重命名检测功能。 - 为每个快照创建一个单独的分支,然后使用以下命令将连续的分支合并到
master
上:
git merge -s recursive -Xtheirs -Xpatience -Xrename-threshold=20
但是,这会让旧版本的重命名文件留在原地,同时无法检测到重命名。
git commit
中的此类选项只会影响该命令的用户界面;Git实际上并不跟踪重命名。 - Fred Foogit log --follow
能够跨越重命名的文件进行工作。对于一系列普通的提交,它会在文件的最新版本处停止。 - Diomidis Spinellis