Git:Stage into Commit,什么是正确的工作流程?

Łuk*_*Lew 21 git split commit staging

我刚刚在几个单独的提交中创建了一大段代码.
所以我可以进行相关部分,提交,阶段,提交......等等,直到我提交了所有更改.

缺少的部分是我如何测试我是否正确分割提交.
也就是说,临时区域中的部分是否至少编译?

为此,我必须以某种方式使我的工作树与索引(临时区域)保持同步,而不会丢失稍后要提交的更改.

正确的方法是什么?
什么是最快的做到这一点呢?

更新:
如何用magit做到这一点?

Von*_*onC 16

你可以这样做:

$ git branch task1 # first set of commit to do
Run Code Online (Sandbox Code Playgroud)

当您向索引缓慢添加一些内容时,中间分支可用于记录某些中间提交.

然后尝试交互式会话以添加您想要的内容:

$ git add -i
Run Code Online (Sandbox Code Playgroud)

在您想要检查添加内容的任何时候添加:

$ git stash --keep-index
Run Code Online (Sandbox Code Playgroud)

如果它编译,git commit您当前的工作,如果task1还没有完成,git stash pop恢复完整工作树并重复.

一旦task1完全烘焙,您可以修剪所有这些' task1'提交,并合并master中的所有工作:

$ git checkout master
$ git merge task1
$ git branch -D task1 # no need for that intermediate branch
Run Code Online (Sandbox Code Playgroud)

如果你想节省一些显著的历史task1提交,你可以变基先task1于主之上,合并前mastertask1(快进)

最后,如果您的存储仍包含正在进行的某些工作,请重复所有过程task2.

  • git stash --keep-index正是我所需要的. (3认同)