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

why are commits visible on github but not in local rep?

我注意到在执行了一些 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 在代表历史记录中看不到,但在 github 上可见,但出现上述指定错误

(示例 link 我可以在其中看到它:https://github.com/user/rep/commit/B ;
https://github.com/user/rep/commit/B(mod) 出现了预期的修改)

谢谢

分支或标签是应用于单个提交的名称。该提交是一个 named 提交。使提交保持活动状态的是它是父项,或者父项的父项,或者... [等等] 命名提交。

好的。将您的分支重置回 A 意味着分支名称现在适用于 A,而不适用于 B 或 C。因此没有任何东西可以让 B 或 C 保持活动状态。

但它们也不会立即被销毁。政策是这样的提交会一直保留到它们被垃圾收集为止。如果您使用 reflog,您会发现它们也仍然存在于您的本地计算机上。这就像在你的电脑上你不只是删除一个文件;您将文件放入垃圾箱,稍后清空垃圾箱。好吧,Git 最终清空了垃圾箱。

您可以通过 forcing a garbage collection now 从您的计算机中删除它们。但是你不能在 GitHub 上这样做;它不属于你。如果你只是等待,它们最终会在 GitHub 上被销毁。

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