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

问题描述 投票:0回答:2

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

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

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

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

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

asp.net asp.net-mvc git tfs azure-devops
2个回答
13
投票

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

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

    git clone --single-branch --branch branchname https://[email protected]/xxx/0508-t/_git/0508-t

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

导航至

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

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

git rebase --rebase-merges --onto SHA^ SHA

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

git rebase --rebase-merges --onto 7e5661e7545013145dc7569edbe7c99f4b8d9671^ 7e5661e7545013145dc7569edbe7c99f4b8d9671

  1. 强制 git Push 到原点:

git push origin +test

注意您要推送的分支名称之前的

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

enter image description here


0
投票

您不需要“物理地”删除项目中不需要的提交。这对于 git 的目的来说不是一个友好的解决方案,即它的主要作用是跟踪文件更改(或版本控制)。 只需尝试改变您对 git 的看法,即可在探索以前从未尝试过的新功能时获得正确的感觉。

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

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

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

然后推送恢复的提交

© www.soinside.com 2019 - 2024. All rights reserved.