我从feature创建了一个master分支,并提交了这些更改。在我加入master之前,还有一个人合并了他/她的分支,它没有通过声纳质量检查。然后,我也将我的feature分支合并到了master分支,但在合并后我意识到声纳质量检查失败了,这是因为master在我的分支合并之前就已经被污染了(我在合并之前没有注意构建失败状态)。因此,现在我想将master设置为质量检查成功的提交(我知道)。但是,由于权限的原因,我不能直接对master进行任何推送,我需要为它提出拉请求。
但是在将我的feature分支合并到master之前,我又做了一个愚蠢的事情。我把另一个部门的变更合并在一起,因为它在质量检查上失败了。我不知道声纳质量检查是什么,并认为由于maven构建是成功的,X2也可以合并,但我使事情更糟。
            Another branch : X2 --- 
                                   \
Feature branch :  -- A -> B -> C -> X2 ->D -> E
                /                              \
Mater branch : A --->X1-------------------------- Merge commit ->现在,我希望大师再次被设定在A,那里所有的质量都通过了。请告诉我我能在这里做些什么。仅供参考,声纳报告中的问题也来自于A之前的提交。似乎声纳正在考虑旧的变化作为新的,并对其进行检查。
发布于 2021-10-05 13:26:57
好吧,回去有点容易,即使考虑到你必须保持当前的历史:
git checkout the-revision-you-like
git reset --soft master
git commit -m "Let's go back to the-revision-you-like"现在,您有了一个修改,它使项目回到您喜欢的修订版的内容。
git checkout -b XXXX-revertToGoodSonar # create a new branch for this
git push origin @ # push the branch into remote
# now create the PR and merge现在棘手的部分是已经合并但不应该合并的特性分支。对于它们中的每一个,您都需要这样做,这样git就会认为它们还没有被合并(或者当您想再次合并它们时,它们会让您头疼)。假设一个特性分支由5个直接修订组成:
git checkout the-feature-branch~5 # checkout the exact revision where it was started from
git cherry-pick HEAD..the-feature-branch # reapply all revisions
git branch -f the-feature-branch # reset branch pointer to new revision现在,这个分支是完全一样的,除了它是由git认为从未合并过的修订组成的。因此,当您想将它们合并到固定的主分支中时,它不会对应该合并的内容感到困惑。
https://stackoverflow.com/questions/69451245
复制相似问题