GitHub 实现多人协同提交代码并且权限分组管理

转载请标明出处: 

http://www.cnblogs.com/zhaoyanjun/p/5882784.html 

出自[赵彦军博客] 2016-09-19

 

前言:

在上一篇文章中Android github 快速实现多人协作 (http://www.cnblogs.com/zhaoyanjun/p/5829142.html)介绍了如何快速的实现多人协作的功能。

其优点是:操作简单,快速上手。缺点是:没有办法实现权限控制。为啥要权限控制?这是一个蛋疼的问题,因为我们为了项目的安全考虑,需要对一部分人开放只读权限(只能 read、clone) ; 或者对一部分人开放写权限(只能 read、clone、push) ; 或者对一部分人开放管理者权限(只能 read、clone、push、给仓库添加成员 )。事实上github对权限的管理只有4种,前三种权限分别是 Admin(管理者)、Write(只写) 、Read(只读) 。最后一种权限比较特殊,它是该组织的创建者,拥有至高无上的的权利。

 

正文:

要想弄清楚github权限管理,需要了解几个概念。 organization(组织) 、repository(仓库)、Team(团队

在了解这些概念之前,先听我讲一个小故事。话说从前有个生意人,由于他聪明又能干,他开了水果摊、奶茶店、还有一个网吧。转眼10年过去了,他积累了很多钱,也有了很牛逼的权利,总的来说就是有钱有势有人,于是乎有一天他带领100个兄弟成立一个黑帮组织:青帮。组织成立后,他把100个兄弟分成4个team, 每个team 25个人。团队成立后,兄弟们总不能坐着饿死吧,于是乎他有开了一个ktv 、一个超市、一个足浴大保健。那么问题就来了,怎么让4个team接手这3个项目,要有明确的权限控制,如果权限控制不得当,就会出现自家兄弟互相抢地盘的问题。一个项目可以让多个team管理,一个team可以管多个项目,所以team和项目之间是多对多的关系。

  • 小故事的中的角色资产分析

生意人所拥有的资产:3个项目:水果摊、奶菜店、网吧。

                           1个组织:青帮

青帮组织所拥有的资产:3个项目:Ktv、超市、足浴大保健

                              4个team

注意:水果摊、奶菜店、网吧 这三个项目只属于生意人的资产,不归任何组织所拥有。那延伸一下,生意人是可以再次创建一个新的项目,比如一个4s店;同时他也可以再创建一个新的组织,比如一个洪帮组织。同样在洪帮组织里面可以创建多个team。

现在可以把思路转换到github中,对应关系

 

生意人   -->   你注册的github账户

水果摊   -->   repository(仓库)

青帮      -->   organization(组织

团队      -->     Team(团队

 

1、github实战--创建组织

在故事中,生意人可以创建项目和组织。对应到github上的用户可以创建仓库和组织。

 

完整的实例

 

2、github实战--在组织中创建仓库

  当创建完组织后,来看看组织的结构

在Organ-Name 组织下,创建一个仓库

 

 

3、github实战--在组织中创建team

 团队创建完成后,默认这个团队的成员只有一个人,就是该账号。下面就开始给这个team添加其他成员。

邀请成功以后,需要被邀请人去自己的邮箱点击一下,确认邀请

 

4、github实战--在组织中给仓库添加team并且设置权限。

 

 可以看到,仓库对team的权限控制有三种

  • Admin 管理者权限(只能 read、clone、push、给仓库添加成员 )
  • Write 写权限(只能 read、clone、push)
  • Read 读权限(只能 read、clone) 

 

另外任意一个Team可以供多个组织使用,到这里权限添加已经全部完成了。

 

总结

  • 通过这篇文章可以在github愉快的使用权限管理了,但是github不能免费的创建私有仓库,这是一个很严重的问题。如果是开源项目,用github完全没有问题。如果是私有项目,可以有以下几个途径达到要求

        1、在github花钱购买私有仓库。

       2、使用国内比较出名的开源中国git托管服务:https://git.oschina.net/   

       3、使用GitLab,这需要在自己的服务器上部署。传送门:https://about.gitlab.com/gitlab-com/

 

时间: 2024-09-20 08:39:33

GitHub 实现多人协同提交代码并且权限分组管理的相关文章

Intellij IDEA 提交代码到远程GitHub仓库

1 原文转载自: http://my.oschina.net/lujianing/blog/180728 2.设置相关绑定 Settings  --Version Control--Git--Path to Git executable--选择你的安装目录,例如ubuntu下/usr/bin/git Settings  --Version Control--GitHub这边Host:github.com  Login:账号  Password:密码 Test  -- 测试连接是否成功 3.项目的

bitbuchet-新人请问IDEA怎么提交代码到bitbucket的远程代码仓库

问题描述 新人请问IDEA怎么提交代码到bitbucket的远程代码仓库 用了hg或者git搞了一个下午,把本地仓库提交,结果只成功创建了空仓库,代码提示push成功,但是bitbucket里面的仓库还是空的,用的IDEA里面的一个bitbucket插件和hg或者git.尝试了一个下午还是没头绪,问下大家怎么做的 解决方案 Intellij IDEA 提交代码到远程GitHub仓库Intellij IDEA 提交代码到远程GitHub仓库Intellij IDEA 提交代码到远程GitHub仓库

向Github提交代码时遇到的一些问题

今天分享一下我的一些小经验,那就是向github提交我们的代码.之前一直是直接使用的浏览器完成的代码的下载任务,没有使用过客户端,为了让自己在工作之前熟练使用GitHub,所以就有了下面的这篇博文了.希望能给遇到相同问题的你一点帮助. 官方参考 操作步骤 首先在GitHub上面创建一个repository.名称随意,我这里是upload 然后是切换到本地的环境下,本人使用的是Git Shell. 使用cd命令切换到我们要进行提交代码的文件目录. 下面就是真正的流程了. touch README.

远程仓库-git 提交代码到远程服务器仓库

问题描述 git 提交代码到远程服务器仓库 我在本地机器建了一个仓库repository,然后在本另一个地方克隆了一个,里面放了我的一个项目A,已将A提交到了本地仓库.现在在公司服务器上创建了一个repository,想把项目A传到公司服务器的仓库中.右键项目A ,git push.这个origin要怎么改.求教! 解决方案 origin配置你公司服务器的git地址. 解决方案二: 你跟远程的git连上了吗?没连上则需要上github网站找到项目的url,然后cpoy该url,然后在本地使用该u

svn-mac电脑Cornerstone可以更新,无法提交代码

问题描述 mac电脑Cornerstone可以更新,无法提交代码 抱歉真没有币了,请大神帮忙,我是做ios开发的,mac电脑装的cornerstone,因为设计多人开发,会需要svn提交代码,现在可以更新和下载代码,但是提交的时候报图片这个错误,软件卸载重装之后这个错误仍然存在,跪求大神帮忙解决,不胜感激. 报错如下: Description : Could not find the specified file. Suggestion : Check that the path you hav

Ubuntu下定时提交代码到SVN

有两个用途,一是偷懒不用去提交代码,二是在远程服务器上使用以作定期备份. sudo gedit /etc/crontab 打开后加入这行 0 * * * * my_user_name my_script_path 表示每个整点以my_user_name身份执行my_script_path.这里最好是使用当前的用户名,修改掉默认的root,否则可能以root身份会提交失败.详情请询问百度crontab的用法. 然后script的内容为: #!/bin/bash cd $my_code_path #

Ubuntu下定时提交代码到SVN服务器的Shell脚本分享_linux shell

有两个用途,一是偷懒不用去提交代码,二是在远程服务器上使用以作定期备份. 复制代码 代码如下: sudo gedit /etc/crontab 打开后加入这行 复制代码 代码如下: 0 * * * * my_user_name    my_script_path 表示每个整点以my_user_name身份执行my_script_path.这里最好是使用当前的用户名,修改掉默认的root,否则可能以root身份会提交失败.详情请询问百度crontab的用法. 然后script的内容为: 复制代码

cvs提交代码会覆盖本地的代码这是为什么

问题描述 cvs提交代码会覆盖本地的代码这是为什么 我在用cvs(commit)提交代码的时候 出现了服务器会把我本地的代码给覆盖了, 这是什么情况...求高手解决啊... 解决方案 http://blog.chinaunix.net/uid-27471355-id-3701492.html 参考

Git 提交代码流程

Git提交代码流程       注意事项: (1)修改文件之前,一定要先git pull,保证修改的是最新的版本; (2)git push之前一定要先git pull,因为可能别人修改相同的文件并已commit,应该merge过来,一并push (3)git commit 和git push时都要diff,确认修改的内容是自己要修改的   血的教训 今天改一个bug 切完分支,就直接改代码了,结果提交的时候,发生了冲突,要我合并. 我合并完之后,push时又有冲突要我合并,我勒个去 把我折腾得够