Git:自合并失败后撤消本地更改

时间:2012-06-25 21:05:10

标签: git git-merge git-rebase

我已经陷入了一种似乎相当不寻常的情况,并且本质上希望将我的工作状态分成两个提交。一个是合并提交,另一个是它自己的实质提交。

以下是发生的事情:

  1. 我用git stash
  2. 保存了我的工作状态
  3. git rebase master
  4. 查看一些合并冲突,修复它们
  5. git stash pop
  6. 对有冲突的文件工作一段时间
  7. 请注意,我忘了为合并冲突提交修复程序,因此这些文件仍然标记为冲突。但他们也有我不想要的局部变化。

    目标

    一个提交来解决合并冲突,一个提交我的本地更改。如何将当前(冲突)状态拆分为这两个提交?

3 个答案:

答案 0 :(得分:1)

在我的头顶,并没有处于类似状态的回购,最好的计划可能是git stash当前状态(合并进行加上新工作),然后{{1在合并之前回到。然后重做合并,并记住提交。然后git reset,但你可能最终得到合并冲突的反转,以便在你这样做时进行整理。

除非您能够通过git stash pop et专门挑选合并后的块与您的额外工作。 al。,或者如果合并或额外的工作不足以折腾并重新开始......

答案 1 :(得分:1)

你可以制作一个git rebase --abort(因为你正在做一个变形),再一次git stash,然后再次尝试git rebase,并用git mergetool解决冲突。完成冲突后,git rebase --continue

答案 2 :(得分:1)

我找到了自己的解决方案,因为我的更改是差异中的单独块。这是我做的:

  1. git add所有未合并的文件,它将我的工作树置于可用状态
  2. git reset取消暂存这些文件
  3. 选择要使用git add --patch
  4. 提交的特定块

    此解决方案的缺点是第一次提交没有任何关于导致它的合并冲突的自动元数据。