托管一个单独的原始仓库

时间:2013-08-15 02:21:23

标签: git github

我需要在GitHub上使用公共project A进入我的项目,进行一些修改,我无法检查GitHub并弄乱原作者的工作,但我确实需要将作者的更新下载到我的公司

我想知道如何在我的公司中托管卫星Git仓库,同时保留它作为我们自己的起源并从真实来源获得更新?

2 个答案:

答案 0 :(得分:2)

考虑使用Git子模块

这个问题有点不清楚,但听起来你可能有自己的Git仓库,但是你希望在代码中包含第三方Git仓库作为库。您有一个选择是使用Git Submodules。我之前从未使用过这些,所以你必须阅读它们的工作原理。

我也听说过另一种选择是git subtree,但这也是我之前从未使用过的,而且main Git documentation目前还没有记录。您可以从Alternatives To Git Submodule: Git Subtree了解subtree的更多信息。


旧答案,但仍然有用信息

将上游回购添加为远程

这个问题有点不清楚,但听起来你基本上只是希望在GitHub上创建一个项目的公司分支作为你的起源,但你仍然想从原始的回购中获取提交。 GitHub用于原始远程源代码库的术语是upstream repo,您​​可以将其添加为任何克隆的另一个远程:

git remote add upstream <url-of-original-repo>

然后只需从upstream获取更改,并将其与您的原始提交合并,或者在您的工作之上或您想要做的其他任何事情上重新定义:

git fetch upstream
git checkout -b master origin/master
git merge upstream/master
git push origin master

正如GitHub Help Page "Fork a Repo"州(强调我的):

  

当克隆存储库时,它有一个名为 origin 的默认远程,它指向GitHub上的fork,而不是它所分叉的原始存储库。 要跟踪原始存储库,您需要添加另一个名为upstream 的远程:

cd Spoon-Knife
git remote add upstream https://github.com/octocat/Spoon-Knife.git
git fetch upstream
     

如果您分叉项目的原始存储库已更新,您可以通过运行以下代码将这些更新添加到您的分支

# Fetches any new changes from the original repository
git fetch upstream
# Merges any changes fetched into your working files
git merge upstream/master

答案 1 :(得分:1)

git remote add myremote ssh@your.githost.com/repo将添加新的原始回购。

但是,根据许可证,如果不在公共场所提供修改后的来源,修改公司使用的来源可能是不合法的。如果您的克隆GitHub repo的许可证是GPL等,那么最好的办法就是在GitHub上分配项目。