在git下提交文件时如何控制重命名阈值?

Dio*_*lis 8 git rename git-commit

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

git add -A .
git commit -m 'Version X'
Run Code Online (Sandbox Code Playgroud)

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

我尝试过的事情:

  • 在提交新文件内容之前,使用home-brew脚本定位重命名的文件,并使用原始文件执行提交重命名为新位置.然而,这引入了一个人工提交,并且似乎不优雅,因为它不使用git的重命名检测功能.
  • 为每个快照创建一个单独的分支,然后将连续的分支合并到master使用上

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

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

Mic*_*ild 11

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

  • `git commit`的输出表示是否已重命名某些文件.我已经看到,当此输出指示重命名时,我可以使用`git log --follow`跟回文件的历史记录.这就是我要完成的事情. (3认同)
  • 但该信息*未存储*,因此“git-commit”拥有这样的选项是没有意义的。 (2认同)

Dio*_*lis 9

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

但是,您可以git log命令中调整重命名检测阈值.您可以使用--find-renames参数执行此操作.这主要完成了我想要实现的结果.

  • git log --find-renames 只显示提交日志。我知道我需要更改复制/重命名阈值百分比,但我还没有看到任何直接的语法示例。你能稍微具体一点吗? (2认同)
  • @ anon58192932`-find-renames`(或`-M`)也采用可选的阈值参数:https://git-scm.com/docs/git-diff.例如,`-M90%`表示如果超过90%的文件未更改,Git应该将删除/添加对视为重命名. (2认同)