【发布时间】:2016-01-31 20:35:30
【问题描述】:
在 git 中,如何删除文件删除和重命名,从分支中的某个提交开始,同时维护每个文件的更改历史(包括删除和重命名)?
我的用例是我建立了一个分支并从那里开始了一个新的分支,在那里我删除了一些文件并重命名了其他一些文件。然后我修改了剩余的(并且经常重命名的)文件(并且还添加了一些文件)。现在我想恢复到原始名称并恢复已删除的文件(仍然存在于公共基础上),同时保留所有内容的历史记录。我的最终目标是能够合并回原来的分支(所以without the renames and file deletions that I introduced)。
这可以吗?我想知道这有多容易,特别是因为重命名的文件被修改了(所以天真地删除重命名会切断原始文件和修改之间的历史链接,我想保留它)......
PS:分支分支后的变化是广泛的(至少在“清理”分支上)。
【问题讨论】:
-
Git 不跟踪文件名的历史记录。这是一个内容跟踪器;它在运行时根据增量计算文件名更改。
-
"因为重命名的文件被修改了,所以天真地删除重命名会切断原始文件和修改之间的历史链接" 这不一定是真的。即使文件修改,Git 也可以计算重命名。此外,如果您通过正常提交将文件重命名为原始名称,您的分支应该可以正常合并。