我注意到在做了一些git动作之后,一些提交丢失了,正如预期的那样,但在github上仍然可以看到错误:This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
复制我所做的:
- 存储库现在是:
A -> B -> C
- 软复位提交
A
重做将 - 存储库现在是:
A -> B(mod) -> C(mod)
- 强制推送到github
- 现在提交
B
和C
不能在rep历史中看到,但在github上可以看到上面指定的错误
B
和C
作为B(mod)
和C(mod)
提交(示例链接,我可以看到它:https://github.com/user/rep/commit/B;
而https://github.com/user/rep/commit/B(mod)出现与预期的修改)
- 是什么引起的?
- 代表是否包含提交
B
和C
?如果有,我如何删除它们/清理代理?
分支或标记是应用于单个提交的名称。该提交是一个名为 commit的。使commit存活的是它是父进程,或者父进程的父进程,或者…
好吧。将分支重新设置为A意味着分支名称现在适用于A,而不是B或C。因此,没有任何东西可以使B或C继续存在。
但是它们也不会立即被销毁。策略是这样的提交在被垃圾收集之前一直保留。如果您使用reflog
,您会发现它们仍然存在于您的本地机器上。这很像你在电脑上不只是删除一个文件;你把文件放入回收站,然后清空回收站。好吧,Git最终会清空它的垃圾。
现在可以通过强制垃圾回收将它们从计算机中删除。但你不能在GitHub上这样做;它不属于你。如果你只是等待,它们最终会在GitHub上被销毁。
如果这件事对你来说很紧急,那么获取到你的本地存储库并删除GitHub存储库。创建新的GitHub存储库,并将您的本地存储库镜像到它。