Git分支实操问题:如何仅将feature-2改动推送到master而不带feature-1内容
仅将feature-2改动推送至master的操作方案
要实现这个需求的核心前提是保证feature-2的开发分支完全不包含已提交到develop的feature-1改动,具体操作步骤如下:
常规操作流程(还未开始开发feature-2的场景)
- 首先切换到本地master分支,同步远程最新的master代码,确保本地master没有多余改动:
git checkout master git pull origin master
- 从当前干净的master分支创建feature-2的独立开发分支:
git checkout -b feature-2 - 在feature-2分支上完成所有开发、提交操作,本地测试通过后执行后续合并操作
- 切换回master分支,合并feature-2的改动:
git checkout master git merge feature-2
- 合并完成无冲突后,将本地master的改动推送到远程:
git push origin master
异常场景处理(已经从develop分支创建了feature-2并完成开发)
如果已经错误从包含feature-1的develop分支创建了feature-2,可以用cherry-pick单独提取feature-2的所有提交:
- 先同步本地master到最新版本:
git checkout master git pull origin master
- 查看feature-2分支的提交记录,记录下所有属于feature-2的提交哈希值,按提交时间从早到晚排序:
git log feature-2 - 在master分支上按顺序执行cherry-pick操作,提取所有feature-2的提交:
git cherry-pick <较早的提交哈希> <较新的提交哈希> ... - 若cherry-pick过程中出现冲突,解决冲突后执行
git cherry-pick --continue,直到所有提交都提取完成 - 推送更新后的本地master到远程即可:
git push origin master
补充说明
如果后续需要将feature-2的改动同步到develop分支,只需要切换到develop分支后执行git merge feature-2即可,不会影响develop上已有的feature-1改动。
内容的提问来源于stack exchange,提问作者HarryClifton
相关产品推荐
相关产品推荐

