vp_arth Asked:2020-11-16 02:21:18 +0000 UTC2020-11-16 02:21:18 +0000 UTC 2020-11-16 02:21:18 +0000 UTC 如何将提交拆分为多个? 772 我用 . 提交了所有内容git commit -a -m Save,但后来我忘记了它,并在它之上做了一些提交。 是否可以将 git 历史记录中的提交拆分为几个更具体的提交? git 1 个回答 Voted Best Answer vp_arth 2020-11-16T02:21:18Z2020-11-16T02:21:18Z Git 文档对这种情况有很好的说明: 拆分提交 在交互模式下,您可以使用“编辑”操作标记提交。但是,这并不意味着git rebase编辑的结果应该是一次提交。 事实上,您可以恢复此提交,和/或添加其他变更集。 这可用于将提交拆分为多个提交: git rebase -i <коммит>^- 使用 开始交互式历史编辑git rebase -i <коммит>^,<коммит>您想分享的内容在哪里。事实上,可以有任何范围的更改,只要它包含所需的提交。 edit- 使用“编辑”操作标记要拆分的提交。 git reset HEAD^- 在编辑此提交时,运行git reset HEAD^. 这将删除提交的变更集,将所有更改留在工作目录中。 git add; git commit- 现在以您想要的方式提交更改。在此过程中,您可以做任何事情,编辑文件,清理存储更改等。 git rebase --continue- 当所有更改都以所需的提交次数(git status空)提交时,执行git rebase --continue以将所有开销更改应用到新更改之上。 git 版本控制历史中的任何更改都会生成一个与旧历史不兼容的新历史(所有哈希都将被更新)。 因此,您必须清楚地了解自己在做什么。 最好不要更改已离开本地存储库并且可能(甚至可能)与另一个开发人员在一起的历史记录。
Git 文档对这种情况有很好的说明:
拆分提交
在交互模式下,您可以使用“编辑”操作标记提交。但是,这并不意味着
git rebase编辑的结果应该是一次提交。事实上,您可以恢复此提交,和/或添加其他变更集。
这可用于将提交拆分为多个提交:
git rebase -i <коммит>^- 使用 开始交互式历史编辑git rebase -i <коммит>^,<коммит>您想分享的内容在哪里。事实上,可以有任何范围的更改,只要它包含所需的提交。edit- 使用“编辑”操作标记要拆分的提交。git reset HEAD^- 在编辑此提交时,运行git reset HEAD^. 这将删除提交的变更集,将所有更改留在工作目录中。git add; git commit- 现在以您想要的方式提交更改。在此过程中,您可以做任何事情,编辑文件,清理存储更改等。git rebase --continue- 当所有更改都以所需的提交次数(git status空)提交时,执行git rebase --continue以将所有开销更改应用到新更改之上。git 版本控制历史中的任何更改都会生成一个与旧历史不兼容的新历史(所有哈希都将被更新)。
因此,您必须清楚地了解自己在做什么。
最好不要更改已离开本地存储库并且可能(甚至可能)与另一个开发人员在一起的历史记录。