Git工具篇:git分支代码pick 提交
项目开发中,往往会有多个分支出现,如测试环境 ,生产环境分支,此时大家都将代码发送到了测试环境,但是上线生产时 只有个别功能需要本期上线,此时就需要将相应本次上线功能的commit 提交到生产分支中。本文对git分支代码pick 提交 处理进行记录。
文章目录
前言
项目开发中,往往会有多个分支出现,如测试环境 ,生产环境分支,此时大家都将代码发送到了测试环境,但是上线生产时 只有个别功能需要本期上线,此时就需要将相应本次上线功能的commit 提交到生产分支中。
一、git cherry-pick 命令作用?
git cherry-pick 是 Git 中用于选择性地将单个或多个提交(commit)应用到当前分支的命令。它的核心作用是 “挑选” 其他分支上的特定提交,将其复制并应用到当前工作分支,而无需合并整个分支的所有提交。
1.1 、核心用途
提取单个提交到目标分支
例如:开发分支(dev)上有一个修复 bug 的提交(commit-A),需要将该修复同步到主分支(main),但不想合并 dev 上的其他未完成提交,此时可用 cherry-pick 提取 commit-A 到 main。
复用独立功能提交
当某个分支上的单个提交实现了独立功能 / 修复,需在其他分支复用该提交时,避免合并整个分支的冗余代码。
修复多分支的相同问题
若多个分支(如 main、v2.0)存在相同 bug,可在一个分支上修复后,通过 cherry-pick 将修复提交应用到其他分支。
1.2 、基本用法
- 挑选单个提交
git cherry-pick <commit-hash>
- " commit-hash:目标提交的哈希值(可通过 git log 查看)。
示例:将 dev 分支的 a1b2c3d 提交应用到当前分支:
git checkout main # 切换到目标分支
git cherry-pick a1b2c3d # 挑选提交
- 挑选多个提交
# 方式1:逐个指定提交
git cherry-pick <commit1> <commit2>
# 方式2:挑选连续范围(左开右闭,commitA 到 commitB 含 commitB)
git cherry-pick <commitA>..<commitB>
# 方式3:挑选连续范围(包含 commitA 和 commitB)
git cherry-pick <commitA>^..<commitB>
- 冲突处理
若 cherry-pick 过程中出现冲突(如代码重叠),Git 会暂停操作并提示冲突文件:
手动解决冲突后,执行:
git add <冲突文件>
git cherry-pick --continue # 继续应用提交
若放弃本次 cherry-pick:
git cherry-pick --abort
若保留当前修改并退出 cherry-pick:
git cherry-pick --quit
1.3 关键特性
生成新提交cherry-pick 并非移动原提交,而是基于原提交的内容创建新的提交(哈希值不同),原分支的提交保持不变。保留提交信息新提交会继承原提交的作者、提交信息(如 commit message),仅提交哈希值和时间戳更新。
适用场景限制
- 适合独立、无依赖的提交(如单个 bug 修复、小功能);
- 若提交依赖其他前置提交(如修改了同一文件的不同部分),直接 cherry-pick 可能导致冲突或逻辑错误,此时建议用 merge 或 rebase。
1.4 、与其他命令的区别
命令 作用 适用场景
- git cherry-pick 挑选单个 / 多个提交到当前分支 适用于复用独立提交、跨分支修复
- git merge 合并整个分支的所有提交到当前分支 适用于分支功能完成后的整体合并
- git rebase 将当前分支的提交 “移植” 到目标分支顶端 适用于线性化提交历史、清理分支
1.5、注意事项
git cherry-pick 是 Git 中 “精准复用提交” 的工具,核心价值在于跨分支选择性应用提交,尤其适用于修复多分支 bug、复用独立功能提交的场景。使用时需注意提交的独立性,避免因依赖导致冲突或逻辑问题
- 提交独立性:确保挑选的提交不依赖其他未被挑选的提交,否则可能引发代码错误。
- 冲突风险:若目标分支与原提交的代码上下文差异较大,冲突概率较高,需谨慎操作。
- 标签与注释:cherry-pick 不会自动复制原提交的标签(tag),需手动重新打标签。
二、cherry-pick使用:
将分支A 中所作的修改 pick 到分支B 中
2.1 checkout B 分支:
检出B 分支,进行pull 获取最新的代码

rebase 更新:
2.2 筛选要合并的commit
通过git 提交的日志记录,筛选出需要被 pick 的commit
2.2.1 使用git 本身进行pick 提交:

选择原有的分支A:
User 选择 me
可以看到改分支下的所有提交记录:
依次查看文件:
左侧可以选择对应的提交,右侧可以查看对应的提交文件,双击文件可以查看内容

2.3 选择对应commit 提交:
筛选出本次想要的commit 提交,Ctrl 可以选择多个

右键选择 Cherry-pick
显示pick 结果
git hub desk 可以查看本次要提交的内容:

确认没有问题进行提交:
2.2.2 使用git hub desk进行 pick 提交:
先checkout 目标分支B ,同样的先pull 拉取最新的代码 ,然后使用git hub desk 进行pick
选择要合并的commit:
选择要合并到的目标分支:

2.2.3 冲突处理:
在合并的过程中可能出现 文件冲突,此时需要根据提示找到对应的冲突文件,手动处理
如下面的冲突提示:
冲突代码:
解决冲突后,继续提交:

最后将本地的代码进行推送:
总结
本文对git分支代码pick 提交 处理进行记录。
更多推荐


所有评论(0)