如何将dev分支的单个commit挑选至main分支?(Azure DevOps/GitHub Desktop)
单个Commit合并到Main分支的操作方法
问题根源
你之前的操作错误在于新分支是基于Dev创建的,所以分支历史默认包含Dev的所有commit。正确的做法是基于Main创建新分支,再把目标Commit单独挑过来。
GitHub Desktop 操作步骤
- 打开GitHub Desktop,拉取所有远程最新代码,切换到
main分支,确保本地代码和远程一致。 - 点击“分支”→“新建分支”,分支基于
main创建,命名比如cherry-pick-[commit描述],创建后自动切换到这个新分支。 - 切换到
dev分支,在“历史”列表里找到目标Commit,右键点击它,选择“复制SHA”(或者手动记下一串字母数字的SHA值)。 - 点击顶部菜单“仓库”→“在终端中打开”,在终端里执行命令:
git cherry-pick <你复制的SHA值> - 如果出现冲突,回到GitHub Desktop里解决冲突,解决后提交到当前的新分支。
- 点击“推送 origin”把新分支推到远程,然后点击“创建拉取请求”,选择目标分支为
main,提交PR等待审核合并即可。
Azure DevOps 操作步骤
- 打开Azure DevOps仓库页面,切换到
main分支,确认代码是最新的。 - 点击“分支”→“新建分支”,选择基于
main创建,命名比如cherry-pick-target,创建完成。 - 回到仓库的“提交”页面,切换到
dev分支,找到目标Commit,点击右侧的...更多选项,选择“Cherry-pick”。 - 在弹出的窗口中,选择刚才创建的
cherry-pick-target作为目标分支,点击“Cherry-pick”。 - 如果有冲突,页面会提示解决冲突,按照指引解决后提交到新分支。
- 推送新分支到远程,然后点击“创建拉取请求”,设置源分支为
cherry-pick-target,目标分支为main,提交PR完成后续合并流程。
注意事项
- Cherry-pick会生成一个新的Commit,SHA值和原Commit不同,但内容一致。
- 如果目标Commit依赖Dev分支里其他Commit的代码,Cherry-pick时会触发冲突,需要手动解决依赖问题。
- 操作前务必确保
main分支是最新状态,避免后续PR合并时出现额外冲突。
内容的提问来源于stack exchange,提问作者Bhav
相关产品推荐
相关产品推荐

