【发布时间】:2015-08-22 11:16:51
【问题描述】:
设置:我继承了一个具有旧开发分支(称为 oldDev)的存储库,该分支取自另一个(称为 master)。
oldDev 存在了一段时间,其中有一些 master 的部分手动合并及其自身的不同发展(手动 master 合并和原始更改的混合,变基不是一个选项)。 oldDev 已经恢复生机,因此正在从 master 合并到 oldDev 以使其功能与 master 兼容。这跨越了多年的主要/次要“发布”标签,涉及数千个更改的文件。 ;-)
问题:在这数千个更改的文件中,我开发了一个文件列表,这些文件只需要跟踪
master而不是oldDev中更改文件提交的一部分。
那么,如何重写历史记录以删除一个“单个”文件和一个分支中较旧的多文件提交?因此,该文件的历史记录(更改和内容)仅基于master 分支而不是oldDev。
注意:我不想从分支中删除该文件,它应该仍然存在,现在基于原始分支 (master) 的流程。
更新:
M - M1(F1)(F2) - M2(F1)(F2) - M3(F1)(F2) - M4(F1)(F2)
\
X - X1(F'1)(F2) - X2(F'1)(F'2) - X3(F'1)(F'2)
在分支 X 中,从 X2 提交中删除文件更改 F'2,以便只有 F'1 在该提交中(因此将 F'2 从先前的提交“还原”为 F2)。
M - M1(F1)(F2) - M2(F1)(F2) - M3(F1)(F2) - M4(F1)(F2)
\
X - X1(F'1)(F2) - X2(F'1)(F2) - X3(F'1)(F2)
【问题讨论】:
-
你能添加一个图表来准确显示你想要的吗?你的问题有点含糊。请在
OldDev和Master分支之间使用一个文件向我们展示您想要的工作流程。 -
没有任何人的回答,我是否认为这不能在 git 历史重写中完成?
标签: git version-control rewrite history