【问题标题】:How to delete commits from git on Github and Bitbucket如何在 Github 和 Bitbucket 上从 git 中删除提交
【发布时间】:2016-11-19 00:50:27
【问题描述】:

我不小心从我的 .gitignore 文件中的 Django 项目中的 .idea 目录中推送了文件。我正在尝试从我的 bitbucket 存储库中完全删除提交,因为我正在与其他人一起处理该项目,并且他无法在不影响他自己的 .idea 文件的情况下提取我的更改。我见过其他 SO 问题,他们说要使用 git revert,但是我记得有另一个命令你推送了你所做的最后一个好的提交,之后的所有内容都从 master 分支中删除。例如

提交历史:

94ca48e

55fab05

3813803

我想删除 94ca48e 和 55fab05。我曾经找到一个命令,您可以在其中将 3813803 设为最新提交,并且在该提交之后远程存储库中的所有内容都将被删除,但我在任何地方都找不到。

【问题讨论】:

    标签: git github repository bitbucket commit


    【解决方案1】:

    使用git reset --hard 3813803。此无法撤消并且可以在本地和远程工作。

    使用git push --force origin master进行远程推送

    看看 Atlassian here 的 git 文档。

    让我也从那里引用:

    reverting 旨在安全地撤消公共提交,而 git reset 旨在撤消本地更改。由于它们不同的目标,这两个命令的实现方式不同:重置完全删除变更集,而恢复保留原始变更集并使用新的提交来应用撤消。

    git reset 是这里要使用的,因为您要求完全删除。

    【讨论】:

    • 我认为它在本地工作,因为它说“您的分支落后于 'origin/Summer2016' 4 次提交,并且可以快进。”但是我该如何远程做同样的事情呢?
    • @TimothyJosephBaney:使用git push --force origin master
    • 请记住,如果您并不孤单,那么这一切都不是一个好主意!
    • Phwew 感谢口琴,当出现问题时,git 总是让我害怕。值得庆幸的是,提交是远程 git 存储库中的两个最新提交,因此它不会影响存储库中的其他任何人。
    • 如果错误推送包含机密,请注意这不会从 Bitbucket 本身删除提交。如果有一个打开的 PR,ID 仍然在日志中可见,并且链接解析为显示差异。
    【解决方案2】:

    即使提交被硬重置,不需要的提交仍会显示在历史记录中。如果还需要重置历史记录,那么恐怕唯一的方法就是删除并重新创建分支。

    【讨论】:

      猜你喜欢
      • 2016-06-29
      • 2016-05-27
      • 2019-02-05
      • 2012-09-14
      • 2018-11-28
      • 2014-07-07
      • 2019-11-02
      • 1970-01-01
      • 2020-06-26
      相关资源
      最近更新 更多