【问题标题】:How to really delete a commit on VSTS / Azure-devops如何真正删除 VSTS / Azure-devops 上的提交
【发布时间】:2020-05-07 06:47:42
【问题描述】:

我正在开发 VS 2017,我们有一个云 VSTS/Azure-devops。

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

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

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

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

【问题讨论】:

  • 您不能删除提交。你可以重写历史,例如使用交互式变基,这样你就有 A -> C' 而不是 A -> B -> C (注意与 C 不太一样,因为它有不同的父级),但是你必须强制推送为您的历史记录与遥控器不匹配。如果您在合并 PR B 时进行壁球提交,无论如何都不会出现在生成的历史记录中,因此除非它导致其他问题(大文件、泄露的凭据),否则可能不值得。
  • 好的,谢谢。 但是我将如何仅为第二个干净提交创建拉取请求?当我现在点击拉取请求时,我看到两个提交。
  • 因为您的 PR 来自包含两个提交的分支。要么强制推送该分支(只要没有其他人拥有该历史记录),要么创建一个新分支并从中打开一个 PR。
  • 如何强制推过该分支? 创建一个新的并从中打开一个 PR。 创建一个新的什么?分支、提交、公关……你能说得更清楚些吗?
  • 1.谷歌“git force push”。 2. 新分支,但它会包含一个新的提交,你会从中创建一个新的 PR,所以我想都是三个。

标签: asp.net asp.net-mvc git tfs azure-devops


【解决方案1】:

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

  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页面-> 选择具体的提交 -> 点击 More -> Copy Full 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 强制推送。值得一提的是,在删除提交时应该非常小心,因为一旦你这样做了,它们就永远消失了。此外,如果您要从远程存储库中删除某些内容,请确保与您的团队协调以防止出现问题。

【讨论】:

  • @CodingValue 该解决方案是否适合您?这里有更新吗?
  • 嗯,它对我有用。为我节省了很多**。我不小心在那里得到了一些敏感信息。最终删除了分支以摆脱“推送”中的更新,但从提交中清除它允许我通过再次推送我的更改(减去敏感信息)来创建一个新分支,同时保留所有其他提交。非常感谢@Andy Li-MSFT!
【解决方案2】:

您不需要物理上删除项目中不需要的提交。这不是 git 目的的友好解决方案,即它的主要作用是跟踪文件更改(或版本控制)。

只需尝试改变您对 git 的看法,以便在探索以前从未尝试过的新功能时获得正确的认识。

在这里,在您的情况下,我建议使用 revert 选项,该选项允许您推送一个新的提交,以撤消对特定先前提交的更改。

在 VS > 团队资源管理器(右侧)> 分支 > 右键单击​​目标分支 > 查看历史记录。这将打开一个带有已提交修改列表的新 vs 窗口

右键单击要撤消的提交>选择还原

然后推送恢复的提交

【讨论】:

  • 如果提交中有合理的数据,则恢复不是正确的方法....有时删除完整提交是正确的方法
猜你喜欢
  • 2019-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-11
  • 1970-01-01
  • 1970-01-01
  • 2017-10-24
  • 2021-04-19
相关资源
最近更新 更多