📜  git split commit into two - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:41:27.763000             🧑  作者: Mango

Git: 将一个提交分成两个

有时候我们会将多个修改一起提交到一个 commit 中,但是随着使用的时间增加,我们可能会发现这个 commit 包含了多个不相关的修改。此时,我们可以使用 git 的一些工具将这个提交拆分成更小的提交。

方法一:交互式 rebase

使用交互式 rebase 时,Git 将展示所有提交并允许我们选择要拆分的提交并产生多个新的提交。具体步骤如下:

  1. 执行 git rebase --interactive HEAD~n 命令,其中 n 是想要 rebase 的提交数,可以使用 git log 命令查看提交数。
  2. 进入交互式 rebase 模式后,将要拆分的提交的行从 pick 修改为 edit
  3. 执行 git reset HEAD^ 命令,撤销这个提交并将所有修改存储在工作区中,这会将 commit 拆分成两部分:一部分是已经提交的,另一部分是未提交的修改。
  4. 使用 git addgit commit 命令将未提交的修改提交为一个新的 commit。
  5. 使用 git rebase --continue 继续 rebase 过程,完成所有操作。
方法二:使用 git-reset

使用 git-reset 时,我们可以撤销部分提交并将未提交的修改保存在暂存区中。具体步骤如下:

  1. 执行 git reset HEAD~1 命令,撤销最新的提交并将所有修改保存在暂存区中。此时,我们已经将 commit 拆分成两个部分。
  2. 使用 git addgit commit 命令将未提交的修改提交为一个新的 commit。
方法三:使用 git-cherry-pick

使用 git-cherry-pick 时,我们可以将某个提交中的一部分修改复制到一个新的提交中。具体步骤如下:

  1. 使用 git log 命令查看提交的 hash 值,并记录需要拆分的提交的 hash 值。
  2. 执行 git cherry-pick -n <hash> 命令将要拆分的提交复制到工作区中。其中 -n 参数表示不要直接提交这个复制的提交,而是将它留在暂存区中。
  3. 使用 git add 命令暂存要提交的修改。
  4. 使用 git reset 回到前面的提交,删除不需要的修改,并使用 git addgit commit 命令提交这个新的 commit。

总结:这里介绍了三种方法来将一个提交拆分成多个提交,其中每种方法都有自己的优缺点,并且每种方法都有多种实现方式。在实际使用过程中,应选择适合自己的方式来实现提交拆分。