git - 需要删除 repo 中的重复提交;无法撤消错误的合并提交
问题描述
我开始更多地了解 git 更高级的方面,而且我已经超越了自己。
我需要删除我错误地推送到我的 repo 的提交,最终结果是我的 repo 中的大多数提交重复。
我相信我搞砸了处理与作为父级的 master 的几个不同分支的多个冲突,看起来我最终将我的 repo 的内容与 repo 本身合并。下面的片段是我的 git 日志中的最后几个条目。即使是“非重复”的 repo 也有超过 528 个原始提交,所以我不想在这里粘贴如此庞大的数量并冒着比我可能已经从这个令人尴尬的帖子中获得的更多反对票的风险。至少,也许,这可能是一个教科书案例,说明为什么在尝试高级 git 操作之前你真的需要知道你在做什么......无论如何,你自己。
我尝试使用rebase
and撤消错误的合并提交revert
。确实,错误地变基是让我陷入这个最近困境的原因。我不想承认,但我也尝试过reset
。但是,使用git reset --hard HEAD~1
and 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 rebase --interactive
用来摆脱不需要的提交,但记住一件事。
不要 rebase 存在于存储库之外的提交,人们可能会基于它们进行工作。
如果您遵循该准则,您会没事的。如果你不这样做,人们会恨你,你会被朋友和家人鄙视。
有很多策略和方法来维护存储库,并且有很多相关的主题。对我来说,这个文档很实用而且很好。
我认为您正在重写提交历史并将其推送为新历史,因此存在很多“重复”提交。
推荐阅读
- php - PHP:如何通过url传递同名的多个参数?
- javascript - 我如何提取 sql 数据并传递给谷歌地图 API
- java - 在 VSCODE 中调试 Java 项目
- django - 如何根据 django 中的用户输入数字动态生成文本框?
- python - 在本地蚊子经纪人上创建 websockects 连接
- angular - 从另一个 observable 的 .subscribe 函数返回一个 observable
- mysql - 两个事件之间的 SQL 时间
- python - Django注销不起作用 - 不明白为什么
- api - Spotify API 认证
- azure - Azure 服务编辑器配置更改未应用