原文地址:http://blog.sina.com.cn/s/blog_8d15072b0102wsr9.html
github和gitlab的关系(原文:http://blog.csdn.net/carryoner/article/details/51684431)。

两者都是基于web的Git repositories(仓库),拥有流水线型的web开发流程,它们为开发团队存储、分享、发布、测试和合作web开发项目提供了中心化的、云存储的场所。Git版本控制——对于多人共同开发一个project来说非常重要——它提供了分享开源项目的平台。

GitLab拥有更多的特性,它可以让开发团队拥有更多的安全性和灵活性的选择。

GitLab的优势 
GitLab拥有GitHub拥有的一切,但他拥有更多——让团队对它们的repositories拥有更多的控制,它的特色:

  • 非常便捷的用户界面,在同一界面上获取到:projects,最近的projects,用户,最近的用户,群组和状态;

  • 允许设置仓库权限是公用的还是私有的;(gitlab可以设置私有,只有本组成员可以看到,github的代码一般所有人都可以看到)

  • “Snippet support”让用户分享一个project的部分代码,而不是整个project。

  • 受保护的分支是一种提升代码安全性的新方法,它们允许用户设置project的获取权限,所以一个团队中只有特定的人可以push,force push或者删除一个分支的代码。

  • Authentication levels更进一步的提升安全性,允许用户给人读写以外的权限。举例来说,你可以给一个组员跟踪变动的权限却不给他获取代码的权限。

  • 你可以设置获取到团队的整体的改进进度,而不是你个人的进度。

  • 开发者通过打上“仍在进行中”状态标签让其他成员知道代码没有完成,从而阻止未完成的代码合并到其他的代码中

  • “innersourcing”公司的资源如果员工不再权限范围内,将不知道这个资源的存在。



在gitlab上新建一个项目。
gitlab新建项目过程和添加用户

权限等级分三种:

  • Private 私有的,只有你自己或者组内的成员能访问
  • Internal 所有登录的用户
  • Public 公开的,所有人都可以访问

3.Git的使用

1.1 添加sshkey

git仓库之间的代码传输协议主要使用ssh协议。而一般搭建gitlab的时候使用的git用户是没有密码的,因此直接ssh是不能登录的,就需要使用ssh-keygen上传公钥,使用非对称加密传输。下面讲述如何上传你的ssh公钥:

1.1.1生成sshkey

在终端中敲下面的命令,第一步会生成一对私钥和公钥,分别存在 ~/.ssh/id_rsa~/.ssh/id_rsa.pub中。第二步查看公钥字符串。

ssh-keygen -t rsa -C "$your_email"
cat ~/.ssh/id_rsa.pub

(过程会有个passphase: 这个算一个连接凭证,后边会用到,简单一点123456,也可以不输入)
1.1.2保存sshkey到gitlab

在面板上依次点击Profile Settings –> SSH Keys –> Add SSH Keys。然后把上一步中的id_rsa.pub中的内容拷贝出来粘贴到输入框中,保存。

完成上面两步之后就成功的添加了sshkey了,然后就可以上传代码了。

2.1 初始上传代码

如果你已经使用过git了,那么这一步对你来说可以跳过了。整体来说比较简单的。下面的$project_root代表工程根目录(你将要上传的工程)

  • 进入工程目录 cd $project_root
  • 初始化git仓库 git init
  • 添加文件到仓库 git add .
  • 提交代码到仓库 git commit -m 'init commit'
  • 链接到git server git remote add origin git@example.com:namespace/projectname.git
  • push代码到服务器 git push origin master
这个就可以上传到你的gitlab了,下图所示。
gitlab新建项目过程和添加用户

3.1 添加用户

这时候就你自己能看到此项目,我们需要添加用户:
进入gitlab界面,
gitlab新建项目过程和添加用户
点击member后:
gitlab新建项目过程和添加用户
就可以搜索用户了,将其添加到该项目。
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐