首页 > 解决方案 > 存储库未分叉,我不确定是什么原因导致它,但希望它被分叉

问题描述

我有一个从团队存储库分叉的存储库。我只是将更改推送到它,当我查看 github 时,我发现它不再是分叉的。我不知道我做了什么让这一切发生。我在命令行执行了这些步骤:

git status
git add .
git commit -m "Message"
git push

然后我看到一个文件没有准备提交,所以我这样做了:

git add "../Filepath/File.cs"
git commit -m "Message"
git push

我是否做错了什么会导致分叉的存储库不再被分叉?我想将我的更新与团队存储库合并,我现在应该怎么做?

上次发生这种情况时,我做了所有这些来修复它,但我希望有一些更简单的东西:

1.) back up current project locally
2.) delete project locally
3.) delete previously forked repository
4.) fork repository again
5.) clone forked repository locally
6.) copy backed up files to cloned location
7.) push files to personal repository
8.) merge personal repository to team repository

标签: gitgithub

解决方案


GitHub“fork”是一个克隆。GitHub 上使用“fork”按钮的唯一特别之处在于它GitHub 本身上做了一些额外的幕后项目:

  • 它可以让他们节省空间。(这里的确切机制对你来说是隐藏的:你的叉子的行为就像任何普通的克隆一样。)

  • 它可以让提出“拉取请求”,由此你推送到你的 GitHub 分支的提交可供控制你分支的存储库的任何人使用,以及 GitHub 作为一个围绕这个的整个生态系统提供的所有问题跟踪和电子邮件生成的东西.

第二个要点是 GitHub 分支的真正卖点。这就是为什么我们使用 fork 按钮,而不仅仅是克隆。第一个要点对 GitHub 来说很好,对 GitHub 的用户没有任何作用。

但是,因为这两种行为都完全是在幕后进行,所以无法做任何事情来影响其中任何一种。只有 GitHub 自己可以“解开”他们为实现第二个要点所做的连接。

通常,如果拥有相关存储库的人将其删除,就会发生这种情况。例如,假设我使用 GitHub 按钮来分叉存储库 R,由所有者 O 拥有。然后所有者 O 认为 R 有一些可怕的地方,所以他们完全删除了 R。现在无处可发送请求因此 GitHub 撤消了他们在我的 fork F 和 O's R 之间建立的连接。

如果所有者 O 现在创建了一个名为 R 的项目,然后我四处寻找,我会看到 R“仍然存在”,并且不知何故我的叉子 F 已与 R“断开连接”。这里真正的问题是 RI 现在看到不是昨天看到的RI。哦,当然,他们有相同的名字。它们甚至可能具有相同的内容(直至原始提交哈希 ID)。但它们是完全不同的存储库,就像通过精确复制每个分子制成的忒修斯之船的复制品仍然是一艘完全不同的船。

现在,如果您可以与所有者 O 交谈并发现他们没有做任何事情,我们必须得出结论,GitHub 以某种方式解开了事情;要解决明显的后续问题(“如何”和“为什么”),我们必须询问 GitHub 人员。


推荐阅读