为什么提交在github上可见,但在本地代表中不可见?

  • 本文关键字:github 提交 git github commit
  • 更新时间 :
  • 英文 :


我注意到在做了一些git动作之后,一些提交丢失了,正如预期的那样,但在github上仍然可以看到错误:This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

复制我所做的:

  1. 存储库现在是:A -> B -> C
  2. 软复位提交A
  3. 重做将BC作为B(mod)C(mod)提交
  4. 存储库现在是:A -> B(mod) -> C(mod)
  5. 强制推送到github
  6. 现在提交BC不能在rep历史中看到,但在github上可以看到上面指定的错误

(示例链接,我可以看到它:https://github.com/user/rep/commit/B;
而https://github.com/user/rep/commit/B(mod)出现与预期的修改)

  • 是什么引起的?
  • 代表是否包含提交BC?如果有,我如何删除它们/清理代理?

感谢

分支或标记是应用于单个提交的名称。该提交是一个名为 commit的。使commit存活的是它是父进程,或者父进程的父进程,或者…

好吧。将分支重新设置为A意味着分支名称现在适用于A,而不是B或C。因此,没有任何东西可以使B或C继续存在。

但是它们也不会立即被销毁。策略是这样的提交在被垃圾收集之前一直保留。如果您使用reflog,您会发现它们仍然存在于您的本地机器上。这很像你在电脑上不只是删除一个文件;你把文件放入回收站,然后清空回收站。好吧,Git最终会清空它的垃圾。

现在可以通过强制垃圾回收将它们从计算机中删除。但你不能在GitHub上这样做;它不属于你。如果你只是等待,它们最终会在GitHub上被销毁。

如果这件事对你来说很紧急,那么获取到你的本地存储库并删除GitHub存储库。创建新的GitHub存储库,并将您的本地存储库镜像到它。

最新更新