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

dee*_*ets 4 git emacs magit

我正在使用Emacs +,它在很多方面都非常适合与git一起使用。尽管我的工作流程中有一个方面无法映射到这个问题,所以也无法解决这个问题。

有时您有一个提交,应将其重新加工为单独的提交。我可以使用magit交互地调整提交的基础,并声明我打算编辑所述提交。

现在,我必须切换到git gui,选择“显示上一次提交”,向我显示已分阶段进行的更改,然后取消分阶段我想成为单独提交的部分。然后,我提交,进行排除,然后再次提交-瞧,我的历史记录中有一个新提交。

到目前为止,我还没有找到使用Emacs完成此操作的方法。有什么提示吗?

Jor*_*ndo 5

开始重新设置基准之后,无需转到gui,而是对HEAD〜1进行magit-reset-head,这将使您处于取消暂存所做更改的位置,并根据需要暂存并提交,然后最终从magit状态缓冲区。


场景工作流程示例:

  1. 提交对文件A的更改(提交1)
  2. 提交对文件B和文件C的更改(提交2)
  3. 提交对文件D的更改(提交3)
  4. 意识到您希望对文件B和文件C所做的更改是单独的提交
  5. magit-log
  6. E在提交2处开始交互式rebase()。
  7. 指定您要编辑(e)提交2并完成(C-cC-c
  8. 返回到magit状态缓冲区。
  9. 运行magit-reset-headx),HEAD~1在提示符下指定。
  10. 您将看到阶段2提交的更改。
  11. 撤消对文件C的更改。
  12. 提交文件B的分阶段更改。
  13. 阶段并将更改提交到文件C。
  14. 继续并完成与 RC

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