受污染的远程主分支或反樱桃选择

我有一种情况,远程存储库有一些“坏”提交。 例如
... o ---- C ---- A ---- B  origin/master 
哪个A不好(但B很好) 我希望遥控器变成......
... o ---- C ---- B  origin/master 
                   
                    A  origin/dev 
对我来说,如何做到这一点并不明显。 在不适合使用rebase的情况下,需要不同的结果。
... o ---- C ---- A ---- B ---- ~A origin/master 
                          
                           -  origin/dev 
这会导致包含A提交的dev分支和不包含A提交的master。 修订后的问题是: 怎么做反樱桃挑选? 因此,不是生成将存储库从状态C更改为A的补丁,而是应用将B更改为A的补丁。     
已邀请:
拉,以便您在本地拥有相同的存储库。 使用
git rebase --interactive
(如果您不熟悉交互式rebase,请参阅此简介)重新排序A和B提交,以便您现在拥有
... o ---- o ---- B ---- A  master 
从那个位置查看一个新的分支开发,所以你得到
... o ---- o ---- B ---- A  master, dev
切换到主分支,执行
git reset --hard HEAD^
以回退该分支一个提交。你现在有
... o ---- o ---- B  master 
                   
                    A  dev 
现在
git push --force --all
你应该是金色的。 (你需要
--force
,因为你正在重写远程存储库中的历史记录,这很危险,如果其他开发人员已经从中取消它,则不推荐使用。)     

要回复问题请先登录注册