[英]How can I completely remove/destroy commits from a git repository?
从表面上看,这似乎与关于改变git repos历史的一百万个类似问题相同,但我相信我的情况有点不同,我找不到适用于我的解决方案。
我有一个git存储库,有一次,其中一个程序员不小心地从不同的存储库中引入了代码,并且该(以前不相关的)存储库的整个历史记录现在是我的存储库提交日志的一部分。
看看这些提交,很明显是从先前无关的回购中“引入”这段历史的确切提交。
在提交之后,我们没有触及任何这些文件。
我想从我的存储库中彻底销毁所有这些无关的提交。 我不介意我是否必须通过提交来提交,但我希望我的repo真正反映我们自己的代码。
如果它有帮助,结构是这样的:
在1234 (更近期) 之后提交 ,请勿触摸1234中引入的任何错误文件
commit 1234 - 有几个与我们的代码库相关的文件,并且还合并了无关repo的整个历史记录
在1234之前 (早期的)提交现在是我们自己的提交和无关回购的提交的混合。
你需要做一个互动的rebase:
git rebase -i <hash-of-the-commit-1034>~
从列表中删除提交1034。 运行git垃圾收集器:
git gc
推入上游:
git push -f
这将清除您的仓库中的提交1034。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.