4

我让自己陷入了一种看起来相当不寻常的情况,并且基本上想将我的工作状态分成两个提交。一个是合并提交,另一个是它自己的实质性提交。

这是发生了什么:

  1. 我保存了我的工作状态git stash
  2. git rebase master
  3. 查看一些合并冲突,修复它们
  4. git stash pop
  5. 在有冲突的文件上工作一段时间

请注意,我忘记提交合并冲突的修复程序,因此这些文件仍被标记为冲突。但他们也有我不想要的本地更改。

目标

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

4

3 回答 3

1

在我的脑海中,并且没有处于类似状态的回购可以玩,最好的计划可能git stash是当前状态(正在进行合并加上新工作),然后git reset回到合并之前。然后重做合并,并记住提交。然后git stash pop,但是当你这样做时,你可能最终会得到与合并冲突相反的结果。

git add -i除非您可以通过et专门挑选出来自合并的块与您的额外工作。al.,或者如果合并或额外的工作微不足道,足以折腾并重新开始......

于 2012-06-25T21:22:19.027 回答
1

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

于 2012-06-25T21:25:52.113 回答
1

我找到了自己的解决方案,该解决方案有效,因为我的更改是 diff 中的单独块。这是我所做的:

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

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

于 2012-06-26T18:43:08.720 回答