2017-03-10 155 views
0

我从来没有在这个项目之前使用过git,所以请耐心等待。如何将github项目分配给github以外的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的回购协议所需的目录,然后git remote set-url origin <our repo url>,然后git remote add upstream <original github url>。我认为我可以进行修改,添加,提交并最终推向我们的回购。当需要时,从上游的遥控器拉动以保持最新的东西。

不幸的是,我做了git add .root后,做git status -s不会显示GitHub目录中添加的文件。做一个承诺并推动东西看起来像一个半熟的状态,然后我开始强调,因为我不知道我在做什么。

所以,如果任何人都可以分享一些帮助,我将不胜感激,但请像我五岁那样和我说话。

回答

1

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

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

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

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

1

所以你想编辑/拉你的项目的上游,而不是为上游本身作出贡献。通过这种方式,您可以分叉这个github仓库,进行更改并将它们推送到叉仓。并从github回购拉更新。详细步骤如下:

1.将您需要的库回收。打开github仓库 - >点击fork按钮 - >复制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