【问题标题】:How to remove some commits from middle of Git master branch? [duplicate]如何从 Git 主分支中间删除一些提交? [复制]
【发布时间】:2016-12-29 08:44:30
【问题描述】:

我错误地提交了 master 分支,不幸的是,其他开发人员在此之上提交了他们的更改。所以我想删除我所有的提交。这是我的提交列表:

我想删除 2016 年 8 月 20 日的所有提交。您的建议是什么?

【问题讨论】:

  • 上一条评论中链接的答案主要讨论git reset,在这种情况下这不是合适的解决方案。
  • @larsks - 第二个答案讨论了变基解决方案。

标签: git github


【解决方案1】:
git rebase -i ca83eb3

当交互式变基发生时,您的文本编辑器将出现。将 pick 更改为 drop 以获取您所做的五个提交。这将在您保存并退出编辑器后从历史记录中删除提交。

粗略地说,我们可以在当天只记录来自您的提交的 sha 进行一些 bash,但由于它只有 5 次提交,所以我们只做这个简单的 rebase。

但是:

你不应该这样做。现在你的提交是公开的,一旦你改变了他们的远程历史,每个开发者的代码都必须被重置。相反,请考虑离开它,或进行额外的提交以删除您的代码。您不想更改公共分支的历史记录。

【讨论】:

  • 你应该警告 OP 关于git rebase 的危险。特别是因为这些更改存在于 master 并且其他开发人员已经在问题提交之上提交。
  • 谢谢。我已经相应地编辑了帖子。
  • 你是对的,因为这种方法会给其他开发者带来麻烦。所以我创建了一个新分支并使用了git revert <commit>,最后合并了这个分支。我建议任何人使用这种方式来处理多个开发人员正在处理同一个 repo 的项目。更多信息:atlassian.com/git/tutorials/undoing-changes/git-revert
  • 你是完全正确的。这就是这样做的方法。 (那个命令让我忘记了)。
猜你喜欢
  • 2017-07-19
  • 2022-10-15
  • 2020-09-08
  • 1970-01-01
  • 1970-01-01
  • 2014-09-01
  • 1970-01-01
  • 2021-08-02
  • 2011-07-22
相关资源
最近更新 更多