多次提交记录合并为一个

239 阅读2分钟

要将所有的提交记录合并为一个,可以使用 Git 的 rebase 命令进行交互式变基操作,或者使用 merge --squash 的方式来实现。下面分别介绍这两种方法:

使用 Rebase

  1. 假设你想要合并在 main 分支上的所有提交,首先确保你在该分支上:
git checkout main
  1. 接着,使用 git rebase 命令进行交互式变基,你需要找到需要合并提交记录的最初一个提交的父提交的哈希值。如果你想要合并所有的提交,那么这个哈希值就是第一个提交的哈希值前的一个(可以使用 git log 查看提交历史)。这里假设第一个提交的父提交哈希值是 abc1234,则命令如下:
git rebase -i abc1234
  1. 这将会打开一个交互式界面,在这个界面中,除了第一行之外的所有 pick 命令前的文字都应该更改为 squash 或者简写的 s,这样 Git 就会将这些提交合并到第一个提交中。
  2. 保存并关闭编辑器,Git 将开始合并提交。如果合并过程中出现冲突,你需要手动解决这些冲突,并使用 git rebase --continue 命令继续合并过程。
  3. 完成后,你会得到一个新的提交历史,其中所有的提交都已经合并成一个。

使用 Merge --squash

另一种方法是创建一个新的分支,然后使用 merge --squash 命令将所有的更改合并到这个新分支上:

  1. 创建并切换到一个新的分支:
git checkout -b new-branch
  1. 从原始分支(例如 main)合并所有的提交到当前分支,但是合并成一个单独的提交:
git merge --squash main
  1. 现在,你可以通过 git commit 命令来提交这个包含了所有更改的新提交。

使用哪种方法取决于你的具体需求和偏好。rebase 方法更加灵活,但对 Git 的理解要求较高;而 merge --squash 方法则更为直接简单,但它会创建一个全新的提交而不保留原有的提交历史。