git cherry-pick的作用

324 阅读2分钟

场景

当前的开发分支feature-2023xxx,该分支已经上线(远程已删除),并且commit有多条记录,当进行下一次功能开发时,又在本地的feature-2023xxx进行开发,并提交了,这样会导致change只有当前修改的记录,但是Commits记录包含了两次的功能开发所有的记录,合并进去也是没问题,但是这样记录会比较不干净。

需求

因此想要实现,从feature-2023xxx捡出当前修改的记录到另一条新的分支上,并且只要最新的Commits记录,丢弃以前早就上线的commit记录。

解决方式

手动操作

比较耗时、麻烦的做法就是自己记录新的修改,手动挪到新分支,容易操作失误、代码丢失。

命令操作

  1. feature-2023xxx ,复制当前提交的ID
git log
  1. 创建一个新的分支
$ git checkout -b [new_branch]

3.使用 git cherry-pick [commit_id] 命令将该提交从旧分支复制到新分支中

$ git cherry-pick [commit_id]
  1. 重复3步骤,直到您将所有需要的提交都复制到新分支中。如果有冲突需解决。
  2. 确保记录已经捡到新分支上后,根据需要,删除远程、本地的feature-2023xxx分支

git cherry-pick

在 Git 中,git cherry-pick 命令用于将单个提交从一个分支复制到另一个分支中,而无需复制整个分支历史。它可以帮助您在不合并整个分支的情况下,将特定的更改从一个分支移植到另一个分支,从而实现更加灵活的代码管理。

当您使用 git cherry-pick [commit_id] 命令时,Git会将指定的提交复制到当前分支中,并创建一个新的提交。新提交包含与原始提交相同的更改内容,但是提交信息和提交时间会有所不同。

git cherry-pick 命令可以用于多种不同的情况,例如:

  1. 在不合并整个分支的情况下将单个提交移植到另一个分支上。
  2. 回退某个提交:可以将一个回滚提交从一个分支复制到另一个分支中,以立即撤消所做的更改。
  3. 重做一些提交:可以从一个分支复制一些提交,将它们应用到另一个分支中,以便重现它们的更改。

需要注意的是,在使用 git cherry-pick 命令时,如果被复制的提交与目标分支中的其他提交之间存在冲突,则需要手动解决这些冲突。如果不解决这些冲突,并直接提交修改,则可能会引入新的错误和问题。