5

我正在使用 Emacs + 它在很多方面都非常适合与 git 一起使用的 magit-mode。尽管我无法映射到我的工作流程的一个方面,因此也无法映射到这个问题。

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

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

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

4

1 回答 1

6

在你开始变基之后,而不是去 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-head( x),HEAD~1在提示符中指定。
  10. 您将看到提交 2 的更改已暂存。
  11. 取消暂存对文件 C 的更改。
  12. 提交文件 B 的分阶段更改。
  13. 暂存并提交对文件 C 的更改。
  14. 继续并完成变基RC

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

于 2014-11-12T17:00:43.667 回答