从git分支恢复,其中多个重置';完成并推送到原点(即,大西洋储藏室)
尽管尽了最大的努力,我们还是在Git存储库中使用了一个特性分支,使自己陷入了困境。最终结果是,从git分支恢复,其中多个重置';完成并推送到原点(即,大西洋储藏室),git,git-merge,git-diff,git-reset,bitbucket-server,Git,Git Merge,Git Diff,Git Reset,Bitbucket Server,尽管尽了最大的努力,我们还是在Git存储库中使用了一个特性分支,使自己陷入了困境。最终结果是,gitdiff develope..feature分支显示了一个完全出乎意料的差异 例如,在develope中添加的一个文件在diff中显示为delete。许多其他文件显示类似的问题,一些丢失,一些添加,许多意外更改。一些应该在develope中的文件甚至没有出现在diff中。当我们通过Pull请求查看代码时,我们首先在Atlassian Stash中注意到了这个问题。挂起的合并完全不正确,无法通过合并
gitdiff develope..feature分支
显示了一个完全出乎意料的差异
例如,在develope中添加的一个文件在diff中显示为delete。许多其他文件显示类似的问题,一些丢失,一些添加,许多意外更改。一些应该在develope
中的文件甚至没有出现在diff中。当我们通过Pull请求查看代码时,我们首先在Atlassian Stash中注意到了这个问题。挂起的合并完全不正确,无法通过合并期间的标准冲突解决方案解决
我们试图破译造成这种情况的原因,我们相信问题源于开发人员对已经推送到源代码的功能分支中的提交执行了多次重置。这是为了“还原”拉请求代码审查期间建议的一些更改。具体而言,我们认为这是事件的时间线
我不确定“还原”是否真的是要撤消错误合并的操作。我的理解是,“恢复”反向应用来自单个提交的补丁,尝试反向应用合并听起来很棘手,因为合并在一个提交中有两个不同之处(我对“恢复”没有太多经验,所以可能可以完成,我不确定)。解决此问题的最安全、最可靠的方法是创建一个新分支,并停止使用合并错误的分支。发生此情况的唯一方法是,如果其他开发人员在步骤4中对源站进行“强制推送”(因为如果不是快进合并,推送将被源站拒绝)。你知道情况是否如此吗?Patrick,不知道。虽然开发人员没有对origin进行“强制推送”,但更改是推送的。答案是从上一次已知的良好提交创建一个新分支。我们决定,我们也不需要从最后一个已知的良好提交中挑选任何提交,而只是合并到新分支中而没有问题。