如何真正删除 VSTS/Azure-devops 上的提交

Cod*_*lue 1 asp.net git asp.net-mvc tfs azure-devops

我正在 VS 2017 上工作,我们有一个云 VSTS/Azure-devops。

我最近提交并推送了......并意识到不应该在其中包含 8 个文件。在那之后,我再次提交了一个干净的并推送到远程。

现在我可以在 VSTS 网站/portail 中看到两个提交。

问题是我需要创建一个拉取请求,当我尝试创建拉取请求时,我发现自己在拉取请求中使用了第一个提交文件......这是我不想要的。

所以我只需要删除我所做的第一个提交,并为第二个干净提交创建一个拉取请求。我怎么过去?因为我搜索并找不到关于如何做的明确解释?

And*_*SFT 5

您可以尝试以下步骤来删除整个提交:

  1. Git 将特定分支克隆到本地存储库:

    git clone --single-branch --branch branchname https://xxx@dev.azure.com/xxx/0508-t/_git/0508-t

  2. 获取要删除的提交的SHA

    导航到https://dev.azure.com/{organization}/_git/{Project}/commits页面 -> 选择特定提交 -> 单击更多->复制完整 SHA。(参考下面的截图)

  3. 在 git bash 中运行此命令以删除本地存储库中的提交:

    git rebase -p --onto SHA^ SHA

    只需将“ SHA ”替换为您想要删除的引用(您从第 2 步中获得的引用)。该命令中的“^”是字面意思。例如 :

    git rebase -p --onto 7e5661e7545013145dc7569edbe7c99f4b8d9671^ 7e5661e7545013145dc7569edbe7c99f4b8d9671

  4. 强制 git push 到原点:

    git push origin +test

注意+你要推送的分支名称前的符号,这告诉 git 强制推送。值得一提的是,删除提交时应该非常小心,因为一旦你这样做,它们就会永远消失。此外,如果您要从远程存储库中删除某些内容,请确保与您的团队协调以防止出现问题。

在此处输入图片说明

  • 对我有用,但是必须用新的“--rebase-merges”替换“-p”(“--preserve-merges”) (3认同)