【问题标题】:Git revert commit on remote branch on first commit for a deleted branch [duplicate]Git在已删除分支的第一次提交时恢复远程分支上的提交[重复]
【发布时间】:2016-08-03 02:13:24
【问题描述】:

一个提交被推送到分支random-tests,其中包含一些敏感信息。该分支不会再被使用,所以我只是从远程和本地强制删除,认为这将清除该分支中的任何提交。我错了。即使分支本身已经消失,提交仍然存在。

这是从master 分离之前对该分支的第一次提交。由于该分支已被删除并且这是该分支上的第一次提交,我如何在不影响其他任何内容的情况下删除该有问题的提交?

【问题讨论】:

  • 您是否有权访问运行 BitBucket 的服务器?见confluence.atlassian.com/bitbucket/…
  • “提交仍然存在”是什么意思?
  • “提交仍然存在”是指“无法访问”的提交吗?如果是这样,那么您可以简单地garbage collect them
  • 另外请记住,如果其他人克隆了 repo 或在您推送分支然后删除它之间的分支,他们也​​可以获取分支并重新推送它。
  • @larsks 我们所有的提交都被推送到 Slack。所以我可以进入 Slack 并单击提交的链接,它会在 BitBucket 上打开。

标签: git bitbucket


【解决方案1】:

如果您仍然看到这些提交,那么它们一定不仅仅是在 random-tests 分支上。无论如何,这是一个选项:

说这是你最近提交的列表:

  • 错误提交
  • 好的提交
  • 好的提交

要从 Git 历史记录中删除“错误提交”,您可以运行 git reset --hard HEAD~1,这会将树重置为单个提交,并忘记曾经存在的“错误提交”。

要更加谨慎地执行此操作,您可以改为运行 git reset --soft HEAD~1,执行 git status 确保正确的文件未暂存,然后运行 ​​git reset --hard 以重置到下一个提交,即最近的“良好提交”。

可能不是最好的解决方案,但应该可以。希望对您有所帮助且有意义!

更新: 因为您修改了 Git 历史记录,所以在将其推送到远程时会遇到问题,因此您必须执行 git push origin branch -f 来强制它。

【讨论】:

  • 是的,他们确实在random-tests 分支上。当我进入 BitBucket 时,它们不再显示分支。我可以查看它们的唯一方法是直接转到我们的 Slack #commits 频道中显示的链接,例如:bitbucket.org/ouraccount/app/commits/…
  • 另外,当我无法拉出有问题的分支时,如何运行git reset?此外,我要删除的提交是该现已删除的分支上的第一次提交。
猜你喜欢
  • 2018-11-01
  • 2020-07-29
  • 1970-01-01
  • 1970-01-01
  • 2020-03-01
  • 1970-01-01
  • 2020-09-08
  • 2022-10-15
  • 2023-01-11
相关资源
最近更新 更多