4.3. 组织和团队

GitHub 在早期没有专门为组织提供账号,很多企业用户或大型开源组织只好使用普通用户账号作为组织的共享账号来使用。后来,GitHub推出了组织这一新的账号管理模式,满足大型开发团队的需要。

  • 组织账号是不能用来登录的,它包含一个Owner(拥有者)用户组,只有属于这个组的用户在登录后,才能切换为组织的管理者。
  • 可以创建任意多的团队(Team)即角色,对属于组织的用户进行管理。Owner Team就是组织中权限最高的角色。
  • 组织和用户一样可以创建项目,但是组织没有SSH公钥配置,也不能以组织的身份操作版本库。
  • 组织没有工作描述之类的个人账号才拥有的属性。

4.3.1. 创建新组织

组织是非登录账号,不能像创建普通登录账号那样直接创建,而是需要以GitHub用户身份登录,然后再创建自己的组织,创建者成为组织天然的管理者。

图4-26就是用户gotgithub登录后,通过点击右上角的账号设置图标进入账号设置界面,然后再点击菜单中的“Organizations”进入组织管理界面。

图4-26:账号设置中的组织管理

在初始的组织管理界面中组织列表为空,即尚不属于任何组织。可以选择把当前用户gotgithub的账号转换为一个组织账号(前提是gotgithub的账号不属于任何组织)。提供这一账号迁移功能是因为在GitHub提供组织这一新功能之前,很多公司或团队以个人身份创建GitHub账号,但是以组织的形象出现,对于这类账号,GitHub提供了由个人账号向组织账号迁移的途径。

在这里我们不进行这一迁移,而是以用户gotgithub的身份创建一个新的组织。点击“Create New Organization”按钮,显示创建组织表单,如图4-27所示。

图4-27:创建新组织

这里填写组织名为 GotGitOrg。创建组织还要选择一个付费方案,默认会选择免费的没有私有版本库的开源方案。

接下来为新建组织设定拥有者(Owner),如图4-28所示。当前用户,即正在创建组织的用户,理所当然成为组织拥有者之一。还可以为组织指派更多的组织拥有者,多个组织拥有者的权限并无差别,都可以管理组织,甚至可以将其他用户从拥有者团队中删除。

图4-28:指派组织拥有者

完成创建后,访问用户账号设置界面中的组织面板,如图4-29所示,列出当前用户所属的组织(GotGitOrg)。可以重新对组织进行设定,或者退出组织。注意因为当前用户已经属于一个以上的组织,所以右侧将当前用户转换为组织的按钮被置灰。

图4-29:加入组织后的组织管理界面

4.3.2. 组织管理

当用户gotgithub成为新建组织GotGitOrg的一员后,就可以在用户和组织的界面之间切换。点击页面左上角“github”文字图标进入仪表板界面。

图4-30:用户仪表板界面

仪表板页面左上角“github”文字图标的下面就是用户上下文列表框。点击用户上下文下拉列表,如图4-31所示。

图4-31:用户上下文切换列表

在用户上下文列表中选择组织GotGitOrg作为用户上下文后,则仪表板中显示的菜单和个人账号仪表板菜单略有不同,如图4-32所示。

图4-32:组织GotGitOrg的仪表板界面

组织的仪表板界面与用户仪表板的不同之处在于增加了团队管理(Team)和组织管理(Organization Settings)。选择菜单中的“Team”进入团队管理界面,可以在组织中添加任意数量的团队。添加新团队的界面如图4-33所示。

图4-33:添加新团队iOS-Team

创建一个团队需要提供四个选项(如图4-33):

  1. 团队名称。如:iOS-Team。
  2. 团队成员。如:supergirl和omnidroid两个用户作为团队成员。
  3. 团队权限。有三个选择:只读(Pull Only)、读写(Push & Pull)、读写并管理(Push, Pull & Administrative)。
  4. 授权版本库。可以添加一个或多个版本库,只有对授权的版本库才拥有指定权限。

其中团队授权中的只读授权对于免费组织账号创建的开源项目没有实际意义,因为开源项目人人可读,只有对于付费的组织账号创建的私密版本库才体现出价值。关于付费账号和私密版本库将在后面的章节介绍。接下来介绍如何在组织账号下创建版本库。

4.3.3. 版本库管理

组织拥有独立的项目托管空间,点击页面左上角的“github”文字图标进入组织账号的仪表板界面。刚刚建立的组织账号的版本库尚未创建,点击图4-32所示的“New Repository”按钮,创建版本库(即项目)。

新建版本库的界面如图4-34所示。

图4-34:新建项目界面

在组织的托管空间创建项目与在普通用户的空间下创建稍有不同,增加了团队设置下拉框。图4-34显示在创建名为MyiPad项目时,只能为项目指派一个已定义团队,要想为项目指派更多团队可以在项目创建完毕通过项目管理界面添加。

下面来看一看如何为已建立项目指派更多的团队。进入项目管理页面,点击左侧菜单项“Team”显示项目的团队管理界面,可以通过该界面,为项目添加和移除团队,如图4-35所示。

图4-35:项目的团队管理

属于团队的项目(版本库)可以转移给个人,反之亦然。图4-36展示了如何通过项目管理界面在用户和组织之间转移项目(版本库)。

图4-36:项目转移

4.3.4. 个人还是组织

若使用“Fork + Pull”的工作模式,通过个人账号还是组织账号托管版本库,几乎没有什么差别。如果一定要找出点不同,那就是在向托管版本库提交Pull Request时,邮件通知的用户范围有所不同。

  • 对于个人账号,对其托管空间内的版本库发出Pull Request,通知邮件会发送给该个人账号及该版本库设置的所有协作者(如果有的话)的邮箱。
  • 对于组织,对其托管空间内的版本库发出Pull Request,不会向组织的邮箱发送Pull Request,也不会向组织的所有者(Owner团队)发送通知邮件,而是向在版本库中拥有Push权限的团队(非Owner团队)成员发送通知邮件。

因此,如果在组织的托管空间创建版本库,一定要要为版本库指派一个拥有Push权限的团队,以免以“Fork + Pull”模式工作时,Pull Request没有人响应。

若是以共享版本库方式(即集中式协同模式)工作的话,使用组织来托管版本库会比使用个人账号托管有效率得多。

  • 以个人账号托管,需要逐一为版本库设置协作者(Collaborators),如果版本库较多且授权相同,配置过程繁琐且易出错。
  • 以组织方式托管,将用户分组,划分为一个一个的团队(Team),以团队为单位授权则方便得多。
  • 如果是以付费账号创建的私密版本库,使用组织方式管理,会有包括只读、读写等更丰富的授权类型,更符合项目管理的实际。

GitHub上创建组织的更多相关文章

  1. 关于如何在github上创建团队开发环境

    今天想写个如何在github上创建团队开发环境的博客.送给那些还不知道如何在github上创建团队开发环境的开发人员. 1.首先,当然你要有个github的账号.具体怎么注册我这里就不说了.可以上gi ...

  2. github上创建java项目简单操作

    github上创建java项目简单操作 参考L: github上创建java项目简单操作 - CSDN博客http://blog.csdn.net/qq_29392425/article/detail ...

  3. 在github上创建新分支

    在github上创建仓库: Create a new repository on the command line touch README.md git init git add README.md ...

  4. github git 在GitHub上创建项目并将本地项目push到网站上

    众所周知,git是与svn类似的版本控制系统,git的去中心化.分布式等的优点,在不久将来用户量大有可能超过svn, 常见的代码托管网站有GitHub,coding.net, gitee.com 码云 ...

  5. 在GitHub上创建代码仓库

    目前在GitHub上管理托管带代码的人越来越多了,今天也尝试了一次,顺便记下来,备用. 首先是在GitHub上创建一个代码仓库,创建完之后,GitHub上会有提示,这时进入项目目录执行下面的命令,顺便 ...

  6. 使用git在github上创建新工程

    这段时间进经常会忘记如何在github上同步工程,于是又得查资料,查参考书,浪费了很长时间,因此有了感触,写几篇有关此类问题的篇章! 这是老手新手都十分容易犯的错误,就是在创建一个新github项目或 ...

  7. 如何在github上创建仓库,并将本地的文件上传到对应的远程仓库

    1.安装git,可从 http://www.bootcss.com/p/git-guide/下载git 2.在github上创建仓库,注意不勾选Initialize this repository w ...

  8. 在github上创建自己的代码仓库

    git用了很久了,github也用很久了,但一直都是使用别人的项目, 最近想把自己写的一些代码放到自己的帐号上去 以为就是很简单的代码推送,真正做一次时候才发现,原来坑还不少呢, 就把这次的经历记录一 ...

  9. 如何在github上创建一个Repository (Windows)

    一种方式是利用Github for windows工具 来操作github,这个是我推荐的方式 1 请先下载一个工具Github for windows,下载地址为:https://windows.g ...

随机推荐

  1. xargs的i参数

    xargs与find经常结合来进行文件操作,平时删日志的时候只是习惯的去删除,比如 # find . -type f -name "*.log" | xargs rm -rf * ...

  2. C# 重构

    重构是在编写代码后在不更改代码的外部行为的前提下通过更改代码的内部结构来改进代码的过程. 一.何时需要重构 1.代码中存在重复的代码: 如果类中有重复的代码块,需将其提炼出一个新的独立方法,如果是不同 ...

  3. percona xtradb cluster test

    docker run --rm -ti -e CLUSTER_NAME=test -e MYSQL_ALLOW_EMPTY_PASSWORD=1 --entrypoint="bash&quo ...

  4. 104. Maximum Depth of Binary Tree (Tree; DFS)

    Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the long ...

  5. 49. Group Anagrams同义词合并

    [抄题]: Given an array of strings, group anagrams together. Example: Input: ["eat", "te ...

  6. DNS处理模块dnspython

    一.介绍 官网:http://www.dnspython.org/ https://pypi.org/project/dnspython/ dnspython是Python的DNS工具包.它支持几乎所 ...

  7. CecOS Virtualization

    CecOS CecOS 是 OPENFANS 为中小型企业提供企业开源云计算解决方案的基础框架:CecOSvt 是一款运行在社区企业云操作系统(CecOS)上的虚拟化开放式解决方案. 也可用演示模式. ...

  8. 关于jdk7中 使用Collections的排序方法时报Comparison method violates its general contract!异常

    参考: Comparison method violates its general contract Comparison method violates its general contract! ...

  9. [C++] const inside class VS const outside class

    const inside class VS const outside class 类内:类内的const和c语言一样,可以通过指针间接修改const变量的值,读内存,一开始必须初始化 类外:虽然可以 ...

  10. select下拉列表

    1.写 <!DOCTYPE html> <html> <head> <title></title> <script language= ...