在使用 git 时我们可能会遇到这样的需求: 想要合并某个分支下的某个特定的 commits

如我想把 feature 分支上的 commit eef67189e9cc73f9bcb4af416ae8248f8e65dca4 合并到我的主分支中。这时我可以使用 git cherry-pick 命令来实现。

首先切换到主分支,然后使用命令加上指定commit 的Revision Number

1
2
git checkout master
git cherry-pick eef67189e9cc73f9bcb4af416ae8248f8e65dca4

操作完后在master 分支上会出现一个新的commit。这样就可以实现我们上面的需求了。

有时可能不只需要合并一个commit 而是一系列相连的 commits,这时我们可以使用rebase 会更适合。

如我需要把featrue 分支的 commit 992e6c 到 dc40bb 合并到主分支.

首先需要基于featrue 创建一个新的分支,并指明最后一个commit

1
git checkout -b newbranch dc40bb  

然后 rebase 这个新分支的commitmaster

1
git rebase --onto master 992e6c^

992e6c ^ 表示从哪个特定的commit 开始 。

这样就实现了我的第二个需求。