【发布时间】:2015-07-03 08:59:31
【问题描述】:
假设以下历史:
X - Y - M - Z <- feature
/ /
A - B - C - D <- master
我想重写历史以将 X 和 Y 修复为单个提交。所以我希望历史看起来像这样:
X' - M'- Z' <- feature
/ /
A - B - C - D <- master
到目前为止,我所有的尝试都失败了。大多数情况下,rebase 期间都会发生冲突。也许 rebase 不是实现这一目标的正确方法?
我知道(不知道合并之前的有效情况并没有真正改变)将合并从 master 重新应用到 feature (M) 会导致我在第一个地方解决的相同冲突。命令“rerere”可能是解决此问题的一个选项,但据了解,这只有在首先激活“rerere”时才有可能。
但在这种情况下,X - Y 确实与 X' 具有相同的变更集。为什么 git 不够聪明,无法重新应用 M?如果我只是在单个提交 X' 中压缩 X 和 Y,则原始已解决的更改(存储在 M 中)应该再次成为 M' 的正确内容。我如何告诉 git 只使用 M 的旧内容来构建 M' ?
【问题讨论】:
标签: git git-merge rebase git-rewrite-history