我如何将 github 项目分叉到 github 外部的 git 仓库?

How do I fork a github project to a git repo outside github?

在我尝试开始这个项目之前,我从未与 git 合作过,所以请多多包涵。

基本上,我的团队正在我们自己的 git 存储库中开始一个新项目,该项目将有其他 github 项目作为依赖项。我们预计我们将不得不对那些我们想要推回我们自己的 repo 的依赖项进行编辑,以便团队中的每个人都可以同步它们。我们还想更新原始 GitHub 仓库中的依赖项,因为我们希望最终将仓库中的更改推回到 GitHub。到目前为止这是否有意义?

好的,所以我想要布置我们项目的方式如下:

root
|- src                    <- Our code goes here
|- upstream               <- GitHub dependencies go under here
   |- GitHub project A
   |- GitHub project B

所以我认为这样做的方法是针对每个 GitHub 依赖项,git clone 将 GitHub 回购到所需目录,然后 git remote set-url origin <our repo url>然后 git remote add upstream <original github url>。我当时想我可以进行更改、添加、提交并最终推送到我们的回购协议。在需要时,从上游远程拉取以保持最新状态。

不幸的是,这并没有完全解决,在我从 root 执行 git add . 之后,执行 git status -s 不会显示添加的 GitHub 目录中的文件.提交和推送让事情看起来像是半生不熟的状态,然后我开始感到压力很大,因为我不知道自己在做什么。

因此,如果有人可以分享一些帮助,我将不胜感激,但请像我五岁一样跟我说话。

您的策略会奏效,但前提是您确实拥有上游写入权限,而显然您没有。由于只需要分叉依赖项,并且如果可以选择将存储库保存在 Github 而不是外部系统中,那么我建议这样做。这是假设您提到的根文件夹本身不是 git 存储库。如果是,请继续阅读,否则跳至下一段。

在这种情况下,您可以将上游设置为您在 Github 中的分叉回购,然后从那里打开一个 PR 到原始回购,同时将您自己的(私人?)回购保留为 origin 远程。您还必须在回购中添加另一个上游远程以从原始 github 回购中提取更改。

如果根文件夹是 git 存储库,那么将上游中的每个文件夹设置为 git submodule 是最佳选择。这样,您就不需要维护三个不同版本的存储库(原始版本、分支版本和上游文件夹中的版本)。相反,您可以在 Github 中分叉存储库,然后从上游文件夹中引用分叉。对它的任何更改都可以直接添加到分叉中。然后,您可以通过 Github 本身从分叉打开对原始存储库的拉取请求。

我还建议将根目录中的 upstream 文件夹重命名为其他名称,因为它可能会让人混淆您所指的内容。

所以你想 edit/pull 为你的项目上游,而不是为上游本身做贡献。对于这种方式,你可以 fork 这个 github 仓库,进行更改并将它们推送到 fork 中。并从 github 存储库中提取更新。详细步骤如下:

1.Fork 你想要的 repo。 打开 github repo -> 单击 fork 按钮 -> 复制 fork repo URL。

2.Work 您的回购如下:

git clone <your repo URL>
cd <your repo name>
git submodule add <fork repo URL> upstream
cd upstream
git remote add real <URL of the github repo>
# edit commit changes for the dependence
git push origin  branchname  # push changes to the fork repo
git pull real branchname     # pull the update of branchname from the github repo
git push origin branchname   # push changes to the fork repo
cd ..
git commit
git push                     #push changes to your repo