2

我在我的开发目录中使用 git 遇到了这种情况:

/mobile.html
/sub-folder/mobile.html

这是在两个地方都有提交的同一个文件。我首先在 root 中处理 mobile.html,然后将其移至 /sub-folder,但它的提交从未遵循。我继续努力并做出新的承诺。

所以现在我基本上有:

  • /mobile.html - 提交 a,提交 b
  • /sub-folder/mobile.html- 提交 c,提交 d

无论如何要加入这两个文件的提交历史记录吗?

4

2 回答 2

3

我认为您在这里看到的是您没有意识到 Git 不跟踪单个文件的历史记录(!)这一事实。在 Git 模型中,仅跟踪内容,并且它在给定存储库快照中存在的所有文件(提交所代表的内容)中的分布是无关紧要的。因此,不会以任何特定方式跟踪重命名,并且该git mv命令只是git rm --cached <filename> && mv <filename> <othername> && git add <othername>.

为了弥补文件更改历史的不连续性,Git 在其历史遍历命令中有特殊的旋钮,可以用来告诉 Git 应该多努力地尝试检测人类对文件重命名的感知。特别是,查看命令的--follow,--find-renames--find-copies命令行选项git log

于 2013-05-05T08:04:51.420 回答
0

如果您移动文件并提交而不修改它们,git 能够知道这是移动而不是删除 + 新文件。

于 2013-07-19T12:08:53.467 回答