无法在 Azure DevOps 中恢复

CMo*_*gan 10 git visual-studio git-revert azure-devops

我将拉取请求合并到我们的开发分支中,但需要对其中一个文件进行额外的更改。我想恢复拉取请求,然后将更改添加到功能分支,但是当我在 Azure Devops 中使用恢复按钮时显示:

Encountered conflicts when reverting commit '8a750f'. This operation needs to be performed locally.
Run Code Online (Sandbox Code Playgroud)

信息非常少,没有任何内容可以指出错误是什么或错误在哪里。

我的第一个问题是:恢复原始功能分支,在此处添加新更改,然后再次合并它们Dev,使用新的拉取请求是添加新更改的最佳方式吗?或者我应该将新的更改添加到新分支中并将该分支推送到Dev?我主要关心的是如何将这两个功能分支(已经合并的分支Dev和新的分支)推送到进一步的分支,例如TestMaster

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

Mer*_*SFT 2

是否恢复原始功能分支,在此处添加新更改,然后在 Dev 中再次合并它们,使用新的拉取请求是添加新更改的最佳方式?

就我个人而言,非常同意上述评论所提到的观点。至于你想要实现的目标,我认为使用不是revert一个好主意。因为它实际上最终会让你的存储库变得一团糟。

正如您在评论中所说,之后revert,您必须重新对feature分支进行所有更改,其中包括之前合并但后来取消的更改。它的优点是它可以确保您的存储库历史记录的完整性。但我不认为这在你的场景中是最好的方法。


为了更详细地解释,最初,拉取请求被合并featuredev分支中,然后您发现需要向其中一个文件添加另一项更改。

那么,为什么不直接将这个新的更改放入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
Run Code Online (Sandbox Code Playgroud)