我需要在GitHub上使用公共project A
进入我的项目,进行一些修改,我无法检查GitHub并弄乱原作者的工作,但我确实需要将作者的更新下载到我的公司
我想知道如何在我的公司中托管卫星Git仓库,同时保留它作为我们自己的起源并从真实来源获得更新?
答案 0 :(得分:2)
这个问题有点不清楚,但听起来你可能有自己的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上分配项目。