14

我正在尝试将特定项目的连续快照放入 git 的历史记录中。我通过使用每个快照的内容填充存储库目录然后运行来做到这一点

git add -A .
git commit -m 'Version X'

这是此答案中推荐的方法。但是,我看到只有当 100% 的文件内容保持不变时,提交才会识别文件重命名。有没有办法影响重命名检测git commit以使其找到文件内容发生变化的重命名?我看到了这一点,git merge并且git diff有各种用于控制重命名阈值的选项,但这些选项对于git commit.

我尝试过的事情:

  • 使用自制脚本定位重命名的文件,并在提交新文件内容之前将原始文件重命名到新位置执行提交。但是,这引入了人工提交,并且看起来不优雅,因为它不使用 git 的重命名检测功能。
  • 为每个快照创建一个单独的分支,然后将连续的分支合并到masterusing

    git merge -s recursive -Xtheirs -Xpatience -Xrename-threshold=20

    但是,这让我保留了旧版本的重命名文件,同时也无法检测到重命名。

4

2 回答 2

14

git commit从不检测重命名。它只是将内容写入存储库。重命名(以及副本)仅在事后检测到,即运行时git diffgit merge和朋友。那是因为git不存储任何重命名/复制信息。

于 2013-02-12T12:53:25.210 回答
14

如评论和另一个答案中所示,在提交中调整重命名检测阈值没有意义,因为这只会更改命令的输出,而不是实际存储在提交中的内容。

但是,您可以git log做的是在命令中调整重命名检测阈值。您可以通过使用--find-renames参数来执行此操作。这主要完成了我想要达到的结果。

于 2013-02-12T13:34:20.460 回答