繁体   English   中英

如何在两个之间具有拉取请求的公共/私有git存储库

[英]How to have a public/private git repository with pull request among the two

我在github上有一个公共存储库,我组的每个用户都有一个存储库。 该策略是禁止直接提交到主存储库,并且所有更改都必须作为来自fork的拉取请求输入,以便可以在合并到主存储库之前对其进行检查。

鉴于有时我们开发的代码必须在主仓库中公开之前必须保持一定的私密性,所以我希望遇到以下情况:

  • 主要回购公开
  • 私人叉子
  • 能够从货叉向主仓库发出拉动请求
  • 假设某些用户是git初学者,请保持简单

现在,在Github上这是不可能的,因为不允许使用私有派生。

我可以使用哪种策略来实现类似的行为?

我只是做了类似的事情。 对我有用的解决方案是创建一个新的私有Repo作为主仓库的裸克隆,并将所有新更改推送到该私有Repo,一旦更改准备好公开,将更改推送到公共回购。



我遵循了以下步骤: 通过以下方式回答这个问题:Martin Konicek


  1. 首先,按照其他人的说法复制存储库( 此处有详细信息):

通过Github UI创建一个新的仓库(我们称它为private-repo )。 然后:

git clone --bare https://github.com/exampleuser/public-repo.git
cd public-repo.git
git push --mirror https://github.com/yourname/private-repo.git
cd ..
rm -rf public-repo.git

  1. 克隆私人仓库,以便您可以对其进行处理:

    git clone https://github.com/yourname/private-repo.git cd private-repo进行一些更改git commit git push origin master


3.要从公共仓库中提取新的更改:

cd private-repo
git remote add public https://github.com/exampleuser/public-repo.git
git pull public master # Creates a merge commit
git push origin master

太棒了,您的私人仓库现在拥有来自公共仓库的最新代码以及您的更改。


  1. 最后,创建拉取请求私有仓库->公共仓库:

创建请求请求的唯一方法是拥有对公共仓库的推送访问权限。 这是因为您需要推送到那里的分支( 这就是原因 )。

git clone https://github.com/exampleuser/public-repo.git
cd public-repo
git remote add private_repo https://github.com/yourname/private-repo.git
git checkout -b pull_request_branch
git pull private_repo master
git push origin pull_request_branch

现在只需创建公共回购通过Github上UI拉请求,如描述在这里

一旦您查看了拉取请求,就可以将其合并。

当然,整个过程可以重复(只需省去添加遥控器的步骤)。 第一次之后,您只需要从所需的远程服务器(公共或专用)中拉出并推入(专用)即可。 完成更改后,将更改推送到(私有:以使其保持最新)并在Public上进行某些分支,以便可以创建对master的请求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM