场景
当前的开发分支feature-2023xxx,该分支已经上线(远程已删除),并且commit有多条记录,当进行下一次功能开发时,又在本地的feature-2023xxx进行开发,并提交了,这样会导致change只有当前修改的记录,但是Commits记录包含了两次的功能开发所有的记录,合并进去也是没问题,但是这样记录会比较不干净。
需求
因此想要实现,从feature-2023xxx捡出当前修改的记录到另一条新的分支上,并且只要最新的Commits记录,丢弃以前早就上线的commit记录。
解决方式
手动操作
比较耗时、麻烦的做法就是自己记录新的修改,手动挪到新分支,容易操作失误、代码丢失。
命令操作
- 在
feature-2023xxx,复制当前提交的ID
git log
- 创建一个新的分支
$ git checkout -b [new_branch]
3.使用 git cherry-pick [commit_id] 命令将该提交从旧分支复制到新分支中
$ git cherry-pick [commit_id]
- 重复3步骤,直到您将所有需要的提交都复制到新分支中。如果有冲突需解决。
- 确保记录已经捡到新分支上后,根据需要,删除远程、本地的
feature-2023xxx分支
git cherry-pick
在 Git 中,git cherry-pick 命令用于将单个提交从一个分支复制到另一个分支中,而无需复制整个分支历史。它可以帮助您在不合并整个分支的情况下,将特定的更改从一个分支移植到另一个分支,从而实现更加灵活的代码管理。
当您使用 git cherry-pick [commit_id] 命令时,Git会将指定的提交复制到当前分支中,并创建一个新的提交。新提交包含与原始提交相同的更改内容,但是提交信息和提交时间会有所不同。
git cherry-pick 命令可以用于多种不同的情况,例如:
- 在不合并整个分支的情况下将单个提交移植到另一个分支上。
- 回退某个提交:可以将一个回滚提交从一个分支复制到另一个分支中,以立即撤消所做的更改。
- 重做一些提交:可以从一个分支复制一些提交,将它们应用到另一个分支中,以便重现它们的更改。
需要注意的是,在使用 git cherry-pick 命令时,如果被复制的提交与目标分支中的其他提交之间存在冲突,则需要手动解决这些冲突。如果不解决这些冲突,并直接提交修改,则可能会引入新的错误和问题。