我在我的开发目录中使用 git 遇到了这种情况:
/mobile.html
/sub-folder/mobile.html
这是在两个地方都有提交的同一个文件。我首先在 root 中处理 mobile.html,然后将其移至 /sub-folder,但它的提交从未遵循。我继续努力并做出新的承诺。
所以现在我基本上有:
/mobile.html
- 提交 a,提交 b/sub-folder/mobile.html
- 提交 c,提交 d
无论如何要加入这两个文件的提交历史记录吗?
我在我的开发目录中使用 git 遇到了这种情况:
/mobile.html
/sub-folder/mobile.html
这是在两个地方都有提交的同一个文件。我首先在 root 中处理 mobile.html,然后将其移至 /sub-folder,但它的提交从未遵循。我继续努力并做出新的承诺。
所以现在我基本上有:
/mobile.html
- 提交 a,提交 b/sub-folder/mobile.html
- 提交 c,提交 d无论如何要加入这两个文件的提交历史记录吗?
我认为您在这里看到的是您没有意识到 Git 不跟踪单个文件的历史记录(!)这一事实。在 Git 模型中,仅跟踪内容,并且它在给定存储库快照中存在的所有文件(提交所代表的内容)中的分布是无关紧要的。因此,不会以任何特定方式跟踪重命名,并且该git mv
命令只是git rm --cached <filename> && mv <filename> <othername> && git add <othername>
.
为了弥补文件更改历史的不连续性,Git 在其历史遍历命令中有特殊的旋钮,可以用来告诉 Git 应该多努力地尝试检测人类对文件重命名的感知。特别是,查看命令的--follow
,--find-renames
和--find-copies
命令行选项git log
。
如果您移动文件并提交而不修改它们,git 能够知道这是移动而不是删除 + 新文件。