【发布时间】:2014-10-23 10:03:52
【问题描述】:
我有一个包含一系列提交的存储库。假设两个旧的提交是 A,紧随其后的是 C:
A--C
在提交 CI 中没有签入旧文件的新版本,但实际上全新的文件具有相同的名称。
这使得提交 C 的 diff 看起来很混乱 - 实际上这个 diff 没有意义,因为文件完全不同。
我想要的是在 A 和 C 之间添加一个提交(我们称之为 B):
A--B--C
在这个提交 B 中,我想删除我用 C 更改过的文件和文件夹。
我知道通过以下内容我可以在 A 和 C 之间添加一个新的提交:
git rebase --interactive A^
然后对提交 A 进行“编辑”
然后
git rm -rf file folder/
git commit -m "B" # New commit with name B
我现在如何获得与原始提交 C 之后相同的文件和文件夹,这意味着 之前 B 到位?
换句话说:我怎样才能再次获得 C,但没有我在 B 中所做的删除?
【问题讨论】:
-
怎么样,更新到 A,提交 B,在 B 之上 rebase C?或者只是在 A 之上提交 B,与 C 合并,然后在合并之上提交一个新的变更集以删除不需要的部分?你真的需要改变历史吗?
-
在 A 之上提交 B 之后,我尝试了
git rebase --onto HEAD A master。这会将 C 重新设置在 B 之上,但是,这(逻辑上)会产生一系列合并冲突。这是我想避免的情况......