📅  最后修改于: 2023-12-03 14:41:27.763000             🧑  作者: Mango
有时候我们会将多个修改一起提交到一个 commit 中,但是随着使用的时间增加,我们可能会发现这个 commit 包含了多个不相关的修改。此时,我们可以使用 git 的一些工具将这个提交拆分成更小的提交。
使用交互式 rebase 时,Git 将展示所有提交并允许我们选择要拆分的提交并产生多个新的提交。具体步骤如下:
git rebase --interactive HEAD~n
命令,其中 n
是想要 rebase 的提交数,可以使用 git log
命令查看提交数。pick
修改为 edit
。git reset HEAD^
命令,撤销这个提交并将所有修改存储在工作区中,这会将 commit 拆分成两部分:一部分是已经提交的,另一部分是未提交的修改。git add
和 git commit
命令将未提交的修改提交为一个新的 commit。git rebase --continue
继续 rebase 过程,完成所有操作。使用 git-reset 时,我们可以撤销部分提交并将未提交的修改保存在暂存区中。具体步骤如下:
git reset HEAD~1
命令,撤销最新的提交并将所有修改保存在暂存区中。此时,我们已经将 commit 拆分成两个部分。git add
和 git commit
命令将未提交的修改提交为一个新的 commit。使用 git-cherry-pick 时,我们可以将某个提交中的一部分修改复制到一个新的提交中。具体步骤如下:
git log
命令查看提交的 hash 值,并记录需要拆分的提交的 hash 值。git cherry-pick -n <hash>
命令将要拆分的提交复制到工作区中。其中 -n
参数表示不要直接提交这个复制的提交,而是将它留在暂存区中。git add
命令暂存要提交的修改。git reset
回到前面的提交,删除不需要的修改,并使用 git add
和 git commit
命令提交这个新的 commit。总结:这里介绍了三种方法来将一个提交拆分成多个提交,其中每种方法都有自己的优缺点,并且每种方法都有多种实现方式。在实际使用过程中,应选择适合自己的方式来实现提交拆分。