我们在 dev 分支对不同的代码文件做了多次提交。现在我们想要把这些提交都合并到 test 分支。首先我们要明白四个 git 操作,
commit:命令用于将你的代码变更保存到本地代码仓库中,它创建了一个新的提交(commit)记录,记录了代码的变更内容以及相关的提交信息(如作者、时间、提交说明等)。push:命令用于将本地仓库中的代码推送(上传)到远程代码仓库,将你的代码变更分享给其他开发者或者备份到远程服务器。cherry pick:命令用于从一个分支中选择性地合并某个提交(commit)到当前分支,它允许你只合并需要的提交而不是整个分支的变更。squash: 用于将多个连续的提交(commit)合并成一个提交,以便清理历史记录或整理提交信息。这个操作通常用于将多个相关的小提交合并成一个更有意义和完整性的大提交,以提高代码库的可读性和维护性。从上面四个操作,要将A分支的多个提交合并一个提交到新的分支。我们得出两个方法,
squash 合并成一个commit,然后 push 到A远程,然后从A远程直接 cherrypick 这一个分支到B分支。cherrypick 到B分支本地进行 commit ,再将多个提交使用 squash 合并成一个提交 push 给B远程。squash
会出现下面的窗口,有多个 action 方式,分别表示以下含义:
pick:git会应用这个补丁,以同样的提交信息(commit message)保存提交reword:git会应用这个补丁,但需要重新编辑提交信息edit:git会应用这个补丁,但会因为amending而终止squash:git会应用这个补丁,但会与之前的提交合并fixup:git会应用这个补丁,但会丢掉提交日志exec:git会在shell中运行这个命令squash
 第一个选择 squash 是会报错,因为不能与前面的合并。因此第一个我们还是选择 pick

 然后我们就多了一个合并后的新的提交记录
我们演示以下把代码从 dev 分支选到 test 分支。
checkout 把代码切到 test因为 cherrypick 命令是将分支提交挑选到当前分支,因此要先切换到test分支。
取消选择 file -》setting -》git -》Commit automatically on cherry-pick

cherrypick这里一定要注意提交记录的分支选择正确,要从 dev 挑选到 test,因此 branch 选择 dev,这里dev也分本地 local 和远程 origin。确认清楚这个提交在本地还是远程。
push 到远程
 结果验证,日志中的分支选择 origin-》test,可以看到只有一条记录。