我克隆了一个公共github repo并开始在本地修改一些文件。
现在我想提交并将这些更改推送到私有存储库,但仍然可以从公共存储库中提取和合并更改。
如何设置git呢?
我知道我可以分叉公共项目并解决分叉版本,但我不打算将我的更改合并到公共回购中,因此我认为这不是正确的解决方案。 / p>
答案 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