如何合并本地的多个 commit?

1,380 阅读2分钟

在 Git 中,如果你想要合并本地的多个提交,可以通过以下几种方式来实现:

1. 合并相邻提交

如果你想要合并最近的几次提交,可以使用 git rebase 命令的交互模式:

git rebase -i HEAD~N

这里的 N 是你想要合并的提交数量。例如,如果你想要合并最近的 3 次提交,你可以使用:

git rebase -i HEAD~3

这将打开一个编辑器,列出最近的 3 次提交。你可以通过将除了第一个提交之外的其他提交行首的 pick 改为 squashs 来合并提交。保存并退出编辑器后,Git 将合并这些提交。

2. 合并特定提交

如果你想要合并特定的提交,可以使用 git rebase 命令的交互模式,但是指定一个特定的提交作为起始点:

git rebase -i <commit-hash>

这里的 <commit-hash> 是你想要开始合并操作的提交的哈希值。在这个交互式界面中,你可以选择合并特定的提交。

3. 使用 git merge 合并特定提交

如果你想要将特定的提交合并到当前分支,可以使用 git cherry-pick 命令:

git cherry-pick <commit-hash>

这里的 <commit-hash> 是你想要合并的提交的哈希值。这个命令会将指定的提交应用到当前分支上。

4. 合并所有提交到一个特定的提交

如果你想要将所有的提交合并到一个特定的提交上,可以使用 git reset 命令将 HEAD 指向那个提交,然后使用 git merge

git reset --soft <commit-hash>
git merge --squash HEAD@{1}

这里的 <commit-hash> 是你想要合并所有提交到的那个提交的哈希值。--soft 选项会保留工作目录和暂存区的状态,--squash 选项会将合并的提交压缩成一个单一的提交。