如何从 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 分支(本地和远程)中删除特定的提交? [复制]