方案: 我们遵循git工作流程:
master 分支 - 具有来自各个功能分支的可释放代码
to-be-QAd 分支 - 包含尚未由QA测试的各个功能分支的代码
答案 0 :(得分:1)
git reset --hard
只重置HEAD
指针。你可能想做git revert <commit-id>
。这有效地撤消了提交并将其记录在历史记录中,以便撤消操作将合并到您的QA分支中。
这来自git help revert
:
给定一个或多个现有提交,还原相关修补程序引入的更改,并记录一些记录它们的新提交。这个 要求你的工作树是干净的(没有HEAD提交的修改)。
注意:git revert用于记录一些新的提交以反转某些早期提交的效果(通常只有一个错误的提交)。如果你想扔 远离工作目录中所有未提交的更改,您应该看到git-reset(1),尤其是--hard选项。 ...
相关:What's the difference between Git Revert, Checkout and Reset?和How to revert Git repository to a previous commit?。
答案 1 :(得分:0)
to-be-QAd 分支仍然包含来自commit2和其他一些不正确文件的更改,因为您从第一次带来功能A时没有撤消合并强>
在进行修复后第二次合并 feature-A 之前,我会在 to-be-QAd 分支上运行git reset --hard,其中是
上第一次合并之前提交的id修改<!/强>
如果其他开发人员在初始合并后将提交的功能设置为QAd,则可能会出现问题。如果这样做,请注意你将要退出的提交。
答案 2 :(得分:0)
当你做了&#39; git reset&#39;在功能A分支上,您返回commit-1然后添加了commit-3。但是在to-be-QAd分支上,你仍然有commit-1和commit-2。然后,当你将feature-A合并到to-be-QAd时,你会得到类似的东西:commit-1,comment-2和commit-3-merged。因此,可能来自commit-2的东西仍然存在。您可以通过以下几种方式解决问题: