Android Studio推送新分支commit时附带3个历史commit如何解决
仅推送单个自定义commit的操作方法
出现该问题的核心原因是你切分支时使用的本地develop分支和远端最新的develop分支不同步,额外的3个commit是远端develop比你本地develop多出来的提交。你可以通过两种方式解决:
方案1:新建干净分支(更安全,推荐)
- 第一步:执行
git log找到你自己提交的那1个commit的哈希值,复制备用(示例哈希为abcd1234) - 第二步:切换到本地develop分支,拉取远端最新代码完成同步:
git checkout develop git pull origin develop
- 第三步:基于最新的develop分支新建干净的功能分支:
git checkout -b 你的新分支名 - 第四步:将你自己的commit cherry-pick到新分支:
git cherry-pick abcd1234
如果出现代码冲突,解决冲突后执行git add .,再运行git cherry-pick --continue即可完成操作 - 第五步:直接推送新分支,此时提交列表仅会包含你自己的1个commit:
git push origin 你的新分支名
方案2:交互式rebase清理当前分支(无需新建分支)
注意:如果该分支已经推送到远端且有其他同事共同开发,不建议使用该方案,强制推送会覆盖其他人的提交
- 第一步:拉取远端develop的最新代码:
git fetch origin develop - 第二步:执行交互式rebase,基于远端最新的develop分支清理提交:
git rebase -i origin/develop - 第三步:在弹出的编辑器界面中,仅保留你自己的那1个commit对应的行,将其余3个不需要的commit行首的
pick修改为drop,保存退出编辑器 - 第四步:如果出现冲突,解决冲突后执行
git add .,再运行git rebase --continue完成rebase操作 - 第五步:推送当前分支,如果之前已经推过该分支到远端,需要加强制推送参数:
git push -f origin 你的当前分支名
内容的提问来源于stack exchange,提问作者Harchit Bhatoia
相关产品推荐
相关产品推荐

