无法还原在Azure DevOps中的操作

10
我将一个拉取请求合并到我们的开发分支中,但其中一个文件需要进行额外的更改。我想撤销这个拉取请求,然后将更改添加到功能分支中。但是当我在Azure DevOps中使用还原按钮时,会出现以下提示:
Encountered conflicts when reverting commit '8a750f'. This operation needs to be performed locally.

非常缺乏信息,没有指出错误是什么或在哪里。

我的第一个问题是:将原始功能分支还原,添加新更改,并再次将它们合并到 Dev 中,使用新的拉取请求是添加新更改的最佳方法吗? 还是应该将新更改添加到一个新分支中,并将该分支推送到 Dev 中? 我的主要担忧是如何将这两个功能分支(已经与 Dev 合并的分支和新的分支)推送到进一步的分支,例如 Test Master

第二个问题涉及错误消息:它是什么意思,我如何检查冲突? 我使用Visual Studio 2019和.Net Core 2.2。


假设dev是你的集成分支,那么是的,在一个主题/特性分支上进行。而且在本地进行可以给你更多的选项来诊断问题。 - Richard
你是否知道 git revert 如何工作?它不会撤销之前的提交,而是添加一个新的提交,取消上一个提交所做的更改。你确定这正是你想要做的吗?也可以参考关于撤销合并的问题 - natka_m
我不能直接在Dev分支上进行任何操作,因为有限制。所以我想的是:撤销之前的拉取请求,在本地拉取dev分支,将新更改添加到先前合并的功能分支中,推送编辑后的分支,并通过拉取请求合并到Dev中。 - CMorgan
@Richard,那么开始一个新的分支并将其推送到dev上,放在之前的拉取请求之上? - CMorgan
1
这是正确的。如果必须使用PR,则始终采用这种方法。 - Richard
请问周末后的进展如何?如果您对以下解释有任何疑问,请不要犹豫,在下面分享您的评论。 - Mengdi Liang
1个回答

2
对于上述评论所提到的观点,我非常赞同。就你想要实现的目标而言,我不认为使用 "revert" 是一个好主意。因为它实际上会使你的存储库变得混乱。
正如您在评论中所说,"revert" 后,您必须重新对 "feature" 分支进行所有更改,其中包括先前合并但稍后取消的更改。它的优点是可以确保存储库历史记录的完整性。但是,在您的情况下,我不认为这是最好的方法。
为了更好地解释,原始的拉取请求将 "feature" 分支合并到 "dev" 分支,然后您发现需要向其中一个文件添加其他更改。
那么,为什么不直接将此新更改应用于 "feature" 分支,然后再次将其推送到 "dev" 分支中呢?
正如您所担心的那样,如果您创建一个新分支来应用新更改,则在需要将它们合并到进一步的分支时会引起麻烦,因为您必须使它们彼此同步,否则很容易引起冲突。
另外,如果创建新分支是您必须做出的选择。您可以基于 "feature" 分支创建此新分支。在将新更改应用于文件后,通过拉取请求将新分支合并到 "feature" 分支中。然后将 "feature" 分支合并到 "dev" 分支中。
此时,可以删除新分支,因为所有更改都已同步回 "feature" 分支。您还可以继续在 "feature" 分支上工作。

这是什么意思,我该如何检查冲突?

有一个其他的线程解释了这个问题非常详细。您可以查看它。
要解决这个问题,您可以尝试以下脚本:
# Unstage conflicts  
git reset HEAD ./  

# Unstage deletions and reset everything back to master
git checkout -- ./ 

# Cancel the pending revert operation
git revert --abort 

$ git checkout 8a750f

# Make use of tag feature, it can help for this kind of issue in the future.
$ git tag mark

$ git push origin mark

1
非常感谢您的详细解释!我通过直接将新更改添加到特性分支而不是还原来解决了这个问题。它起作用了,现在已经合并到主分支了。 - CMorgan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接