1

我需要project A在我的项目中使用 GitHub 上的公开,并进行一些我无法检查到 GitHub 并搞乱原作者的工作的修改,但我确实需要将作者的更新拉到我的公司中。

我想知道如何在我的公司中托管卫星 Git 存储库,同时将其保留为我们自己的来源并从真实来源获取更新?

4

2 回答 2

2

考虑使用 Git 子模块

这个问题有点不清楚,但听起来你可能有自己的 Git 存储库,但你想在你的代码中包含一个 3rd-party Git 存储库作为库。您拥有的一种选择是使用Git Submodules。我以前从未使用过其中之一,因此您必须阅读它们的工作原理。

我还听说另一个选项是git subtree,但这也是我以前从未使用过的东西,而且它目前也没有记录在主要的 Git 文档中。subtree您可以从 Git 子模块的替代品中了解更多信息:Git Subtree


旧答案,但仍有有用的信息

将上游仓库添加为远程仓库

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

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 帮助页面“Fork a Repo”所述(强调我的):

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

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

如果您派生项目的原始存储库得到更新,您可以通过运行以下代码将这些更新添加到您的 fork 中

# Fetches any new changes from the original repository
git fetch upstream
# Merges any changes fetched into your working files
git merge upstream/master
于 2013-08-15T02:25:20.610 回答
1

git remote add myremote ssh@your.githost.com/repo将添加一个新的原始仓库。

但是,根据许可证的不同,如果不在公共场所提供修改后的源代码,则修改源代码以供您的公司使用可能是不合法的。如果您克隆的 GitHub 存储库的许可证是 GPL 等,那么最好的办法是在 GitHub 上分叉该项目。

于 2013-08-15T02:24:46.487 回答