修改作为magit中rebase的一部分编辑的提交

时间:2014-11-12 13:36:23

标签: git emacs magit

我正在使用Emacs +它在很多方面都是神奇的magit模式来使用git。我的工作流程有一个方面,但是我无法映射到这个,因此这个问题。

有时你有一个提交应该重新设计成单独的提交。我可以使用magit以交互方式重新提交我的提交,并声明我打算编辑所述提交。

现在我必须切换到git gui,选择“ammend last commit”,它显示了我的分阶段更改,并取消了我想要成为单独提交的那些部分。然后我提交,分阶段排除,再次提交 - 瞧,我的历史中有一个新的提交。

到目前为止,我还没有找到使用Emacs实现此目的的方法。任何提示?

1 个答案:

答案 0 :(得分:4)

在你开始改变之后,不要去gui,做一个magit-reset-head到HEAD~1,这将使你处于取消更改的位置,并按照需要进行阶段和提交,最后继续从magit状态缓冲区中重新定义。


示例场景工作流程:

  1. 提交对文件A(提交1)的更改
  2. 提交对文件B和文件C(提交2)的更改
  3. 将更改提交到文件D(提交3)
  4. 意识到您希望对文件B和文件C的更改是单独的提交
  5. 运行magit-log
  6. 在提交2处开始交互式rebase( E )。
  7. 指定您要编辑( e )提交2并完成( C-c C-c
  8. 返回magit状态缓冲区。
  9. 运行magit-reset-head x ),在提示中指定HEAD~1
  10. 您将看到提交2阶段的更改。
  11. 取消对文件C的更改。
  12. 提交文件B的暂存更改。
  13. 暂存并将更改提交到文件C.
  14. 继续并以 R C
  15. 完成变基

    您现在将有四个提交,每个提交按A,B,C,D顺序更改一个文件。