如何从 Git 主分支中间删除一些提交? [复制]

Posted

技术标签:

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

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

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

【问题讨论】:

上一条评论中链接的答案主要讨论git reset,在这种情况下这不是合适的解决方案。 @larsks - 第二个答案讨论了变基解决方案。 【参考方案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 你是完全正确的。这就是这样做的方法。 (那个命令让我忘记了)。

以上是关于如何从 Git 主分支中间删除一些提交? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Git - 将分支移动到主控

是否可以从 Git 分支(本地和远程)中删除特定的提交? [复制]

如何将一个git的master分支提交添加到另一个git中?

如何从旧提交创建新的 Git 分支? [复制]

如何请求提交到开源 git 存储库的权限? [复制]

如何获取 git commit 中的文件列表? [复制]