一尘不染

将先前的提交分解为多个提交

git

如果不创建分支并在新分支上做一堆时髦的工作,是否可以在将单个提交提交到本地存储库后将其分解为几个不同的提交?


阅读 201

收藏
2022-02-23

共1个答案

一尘不染

git rebase -i会做的。

首先,从一个干净的工作目录开始:git status应该没有待处理的修改、删除或添加。

现在,您必须决定要拆分哪些提交。

A)拆分最近的提交

要拆分您最近的提交,首先:

$ git reset HEAD~

现在以通常的方式单独提交各个部分,根据需要生成尽可能多的提交。

B) 将提交拆分得更远

这就需要rebase,也就是重写历史。要指定正确的提交,您有多种选择:

  • 如果是三个提交,那么

$ git rebase -i HEAD~3

3有多少次提交。

  • 如果它在树中的位置比您想计算的更远,那么

$ git rebase -i 123abcd~

123abcd您要拆分的提交的 SHA1 在哪里。

  • 如果您在要合并到的不同分支(例如,功能分支)上master

$ git rebase -i master

当你得到 rebase 编辑屏幕时,找到你想要拆分的提交。在该行的开头,替换pickedite简称)。保存缓冲区并退出。Rebase 现在将在您要编辑的提交之后停止。然后:

$ git reset HEAD~

以通常的方式单独提交各个部分,根据需要生成尽可能多的提交。

最后

$ git rebase --continue
2022-02-23