【发布时间】:2021-02-09 04:13:55
【问题描述】:
假设我有两个包含两个类的文件,A 和 B。在某些时候,B 类似乎只在A 类内部使用,从代码设计的角度来看,将B 放在里面是完全合理的 A 并将其声明为私有。
现在,如果我必须做这样的任务,我只需将源代码从一个文件复制到另一个文件,然后删除现在为空的文件。缺点是版本控制历史并没有完全丢失,但无法再明显地发现。
例如,对于任何指责B 源代码的人,看起来我是从头开始创建这个类的,这个人需要去查看实际的提交以了解真正发生了什么,然后检查已删除文件的历史记录。相比之下,如果我只是移动文件,版本控制显示源代码有一堆更改,然后被移动,然后有其他更改。
有没有办法以保留历史记录的方式合并两个文件(在 SVN 或 Git 中)?
当然,当我尝试用 Google 搜索时,我会得到很多关于合并分支的结果,但我找不到如何让 Google 明白我在谈论不同的合并。
【问题讨论】:
-
不直接.....可能会考虑重写历史记录,以便不是将 B 作为单独的文件启动,而是从头开始在 A 内部启动...但是每次修改 B 时,您都会得到一个冲突,以便您将代码从 B 移动到 A.... 本身并不太难,但如果历史很长,则很乏味.... 当然,您正在重写历史。
-
让我把食谱描述为答案
-
这两个文件的历史是否共享历史?
-
例如是否已推送每个文件的提交?
-
我想知道是否在单独的分支中将每个文件重命名为 C,然后合并它们是否可以解决问题。
标签: git svn version-control