如何将github项目分叉到github外的git repo?

时间:2017-03-10 02:02:17

标签: git version-control git-clone git-fork

我在这个项目之前从未与git合作我试图继续前进,所以请耐心等待。

基本上,我的团队正在我们自己的git repo中启动一个新项目,该项目将有其他github项目作为依赖项。我们希望我们必须对这些依赖项进行编辑,我们希望将其推回到我们自己的仓库,以便团队中的每个人都可以同步它们。我们还希望从原始GitHub仓库更新依赖关系,因为我们希望最终将我们的仓库中的更改推回到GitHub。这到目前为止有意义吗?

好的,我想布置项目的方式如下:

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

所以我认为这样做的方法是为每个GitHub依赖项,git clone GitHub repo到所需目录,然后git remote set-url origin <our repo url>然后git remote add upstream <original github url>。我想当时我能够进行更改,添加,提交并最终推送到我们的仓库。如果需要,可以从上游遥控器拉出以保持最新状态。

不幸的是,在我从git add . root git status -s后,__BST_INCLUDED 执行__BST_INCLUDED__. 时不会显示添加的GitHub目录中的文件。做一个提交并推送看起来像半烘烤状态的东西,然后我开始强调,因为我不知道我在做什么。

所以,如果有人可以分享一些帮助,我会非常感激,但请和我谈谈,就像我五岁。

2 个答案:

答案 0 :(得分:1)

您的策略可行,但前提是您实际上具有上游写入权限,而您实际上并非如此。由于只需要分叉依赖项,并且如果将备份保留在Github而不是外部系统是一个选项,那么我建议这样做。这假设您提到的根文件夹本身不是git repo。如果是,请继续阅读,否则跳到下一段。

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

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

我还建议将根目录中的上游文件夹重命名为其他内容,因为它可能会让您感到困惑。

答案 1 :(得分:1)

因此,您希望编辑/拉动项目的上游,而不是为上游本身做出贡献。通过这种方式,你可以分叉这个github repo,进行更改并将它们推送到fork。并从github repo中获取更新。详细步骤如下:

1.Fork你想要的回购。打开github repo - &gt;点击fork按钮 - &gt;复制fork repo URL。

2.按照以下方式使用您的回购协议:

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