如何进入与我正在提取的存储库不同的存储库

时间:2015-01-22 15:15:02

标签: git github version-control

我克隆了一个公共github repo并开始在本地修改一些文件。

现在我想提交并将这些更改推送到私有存储库,但仍然可以从公共存储库中提取和合并更改。

如何设置git呢?

我知道我可以分叉公共项目并解决分叉版本,但我不打算将我的更改合并到公共回购中,因此我认为这不是正确的解决方案。 / p>

3 个答案:

答案 0 :(得分:1)

您可以定义多个远程存储库。

$ git remote add repo1 <repo1_url>
$ git remote add repo2 <repo2_url>

现在你有2个远程回购,如果你的分支正在跟踪远程master分支那么你可以说repo1 git pull分支master可以直接$ git push repo2 <branch_name> 可以使用

推送到其他仓库
{{1}}

现在你将分支推送到另一个仓库。

答案 1 :(得分:1)

  

我知道我可以分叉公共项目并解决分叉版本,但我不打算将我的更改合并到公共回购中,因此我认为这不是正确的解决方案。 / p>

这是一个有效的解决方案,即使您不打算提出任何拉取请求。

如果您不希望您的更改可见(在公共仓库中,就像fork repo那样),这将不是一个有效的解决方案。

在这种情况下,创建一个空的私人仓库(例如在Bitbucket上)和:

cd /path/to/local/repo
git remote rename origin upstream
git remote add origin /url/to/private/repo
git push --mirror

重要的是要保留指向原始公共回购的链接(此处称为&#39;上游&#39;),以便能够在upstream/master上获取或变基(并从中获取最新的更新)那个回购)。

答案 2 :(得分:1)

我会将远程原点更改为私人仓库:

git remote delete origin
git remote add origin git@server:user/repo.git

现在您可以使用

推送到私人仓库
git push origin BRANCH_NAME

要从公共仓库拉(并合并),我会创建另一个遥控器,让我们称之为upstream

git remote add upstream git@server:public/repo.git

您现在可以从上游获取:

git fetch upstream master

并可能将其合并到您当地的分支机构:

git merge upstream/BRANCH_NAME