首页 > 解决方案 > 需要删除 repo 中的重复提交;无法撤消错误的合并提交

问题描述

我开始更多地了解 git 更高级的方面,而且我已经超越了自己。

我需要删除我错误地推送到我的 repo 的提交,最终结果是我的 repo 中的大多数提交重复。

我相信我搞砸了处理与作为父级的 master 的几个不同分支的多个冲突,看起来我最终将我的 repo 的内容与 repo 本身合并。下面的片段是我的 git 日志中的最后几个条目。即使是“非重复”的 repo 也有超过 528 个原始提交,所以我不想在这里粘贴如此庞大的数量并冒着比我可能已经从这个令人尴尬的帖子中获得的更多反对票的风险。至少,也许,这可能是一个教科书案例,说明为什么在尝试高级 git 操作之前你真的需要知道你在做什么......无论如何,你自己。

我尝试使用rebaseand撤消错误的合并提交revert。确实,错误地变基是让我陷入这个最近困境的原因。我不想承认,但我也尝试过reset。但是,使用git reset --hard HEAD~1and git reset --hard HEAD~3,它指代错误的合并提交,然后暂存并尝试设置提交,会导致以下消息:

// ♥ git commit -m 'attempts to reset HEAD to master before erroneous merge'
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean 

提前感谢任何人提供的任何帮助。

上述 git 日志:

// ♥ git log --oneline --graph
*   f2608af5 (HEAD -> master, origin/master, origin/HEAD) Merge branch 'master' of github.com:stazman/sfsourcer
|\  
| *   5911dd07 Merge branch 'master' of github.com:stazman/sfsourcer
| |\  
| | * 7cb2f887 bundle updated
| | * 40c8438c adds .env to gitignore file correctly
| | * 5ae74993 more button disappears after clicked on funding_projects index view

标签: git

解决方案


git rebase --interactive用来摆脱不需要的提交,但记住一件事。

不要 rebase 存在于存储库之外的提交,人们可能会基于它们进行工作。

如果您遵循该准则,您会没事的。如果你不这样做,人们会恨你,你会被朋友和家人鄙视。

有很多策略和方法来维护存储库,并且有很多相关的主题。对我来说,这个文档很实用而且很好。

我认为您正在重写提交历史并将其推送为新历史,因此存在很多“重复”提交。


推荐阅读