Git 管理篇

Git 介绍

  • Git 是什么?傻瓜内容跟踪器(The stupid content tracker)!Git 创始人、Linux 之父 Linus Torvalds 就是这样介绍 Git 的。
  • Git 是用于 Linux 内核开发的版本控制工具。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,服务器端软件支持不再是必需项,这使得源代码的发布和交流极其方便。 Git 的速度很快,这对于诸如 Linux kernel 这样的大项目来说自然很重要。 Git 最为出色的是它的合并跟踪(merge tracing)能力。
  • 实际上内核开发团队决定开始开发和使用 Git 来作为内核开发的版本控制系统的时候,世界开源社群的反对声音不少,最大的理由是 Git 太艰涩难懂,从 Git 的内部工作机制来说,的确是这样。但是随着开发的深入,Git 的正常使用都由一些友好的脚本命令来执行,使 Git 变得非常好用,即使是用来管理我们自己的开发项目,Git 都是一个友好,有力的工具。现在,越来越多的著名项目采用 Git 来管理项目开发。
  • 作为开源自由原教旨主义项目,Git 没有对版本库的浏览和修改做任何的权限限制。作为管理员,选择 Git 前一定要明白这句话意味着什么。
  • 目前 Git 已经可以在 windows 下使用,主要方法有二:msysgit 和 Cygwin。Cygwin 和 Linux 使用方法类似,Windows 版本的 Git 提供了友好的 GUI(图形界面),安装后很快可以上手。

Git VS SVN

  • Git 是分布式的。这是 Git 和其它非分布式的版本控制系统(例如 SVN,CVS 等)最核心的区别;
  • Git 把内容按元数据方式存储,而 SVN 是按文件存储,所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn 或 .cvs 等的文件夹里;
  • Git 分支和 SVN 的分支不同。分支在 SVN 中没有特别含义,仅是版本库中的另外的一个目录;
  • Git 没有一个全局的版本号,而 SVN 有。目前为止这是跟 SVN 相比 Git 缺少的最显著的特征;
  • Git 的内容完整性要优于 SVN。Gti 的内容存储使用的是SHA-1哈希算法,这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

为什么选择Git

  • Git 是分布式的版本控制系统,不必依赖于服务端即可工作;
  • Git 为开发者提供了更多的独立于团队之外的空间;
  • Git 展现了不同于大多数人的软件开发管理理念,有助于拓展开发者视野。

在Ubuntu上搭建Git服务器

安装环境 操作系统:Ubuntu 1404 硬件配置:阿里云主机,双核CPU,4G内存

安装 Git Git 的安装非常简单,一般不会出现问题。为了保险起见,安装之前,先update一下。

root@yms:~# sudo apt-get update
root@yms:~# sudo apt-get install git

创建 Git 管理员

  • 如前所述,Git 没有对版本库的浏览和修改做任何的权限限制。既然合法的用户都拥有最高权限,那么服务端区别哪一位用户的服务请求就没有价值了,因此所有的客户端访问服务器时,使用的是同一个用户账号。假定该用户名为git,git同时也是Git服务器的管理员。
root@yms:~# sudo adduser git

请务必牢记并妥善保管git用户的密码。

禁止 git 用户从 shell 登录

  • 使用Git服务器的程序员需要知道Git用户密码,出于安全考虑,Git服务器通常会禁止git用户从shell登录。此举会导致程序员无法从客户端向服务器提交SSH证书公钥,必须通过管理员才能添加SSH证书公钥,继而成为合法的Git服务使用者。

编辑/etc/passwd文件,将

git:x:1000:1001:,,,:/home/git:/usr/bin/git-shell

改为

git:x:1000:1001:,,,:/home/git:/bin/bash

创建 Git 服务路径 在规划的路径下创建git文件夹,并将所有者设置为git用户。

root@yms:~# cd /sdyouth
root@yms:~# mkdir git
root@yms:~# chown -R git:git git

启用 RSA 认证

进入 /etc/ssh 目录,编辑 sshd_config,打开以下三个配置的注释:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile    %h/.ssh/authorized_keys

保存并重启 sshd 服务:

root@yms:~# /etc/init.d/ssh restart

创建证书管理 文件 在 /home/git/ 下创建目录 .ssh 文件夹,进入该文件夹创建 authorized_keys 证书文件:

root@yms:~# cd /home/git
root@yms:~# mkdir .ssh
root@yms:~# chown -R git:git .ssh
root@yms:~# cd .ssh
root@yms:~# cat > authorized_keys

按 Ctr + d 结束 cat 命令,创建空的authorized_keys 证书文件。

至此,Git服务器已经配置完成。不过,要想测试的话,至少还需要两步:

  • 创建版本库(详见版本库管理)
  • 添加用户(详见用户权限管理)

版本库管理

创建版本库 执行以下命令,即可创建项目名称为 xufive 的版本库:

root@yms:~# cd /sdyouth/git
root@yms:~# sudo git init --bare yms.git
root@yms:~# chown -R git:git yms.git

删除版本库 危险行为,谨慎操作!

root@yms:~# cd /sdyouth/git
root@yms:~# sudo rm -rf yms.git

用户权限管理

增加用户

  • 正如前文所说,Git 服务器并不在意你是谁,而更在意你是否合法。管理员只要将合法用户提供的数字证书公钥添加到 authorized_keys 证书文件中,该用户就可以使用 Git 服务了。
root@yms:~# cd /home/git/.ssh
root@yms:~# cat >> authorized_keys

粘贴用户提供的公钥文件内容后,按 Ctr + d 结束 cat 命令。

特别提示:

cat >> authorized_keys 以追加方式写入从标准输入设备输入的内容 cat > authorized_keys 以覆盖方式写入从标准输入设备输入的内容

删除用户 只要从 authorized_keys 文件中删除用户的证书,该用户就不再是合法用户了。问题的关键是如何从 authorized_keys 文件中找到欲删除用户的数字证书。事实上,这不是问题,因为用户在生成数字证书时,需要输入一些信息,这些信息在数字证书中以明文显示。

yms

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Git 程序员篇

    图中我们可以看出此时 “HEAD” 实际是指向 master 分支的一个"游标"。所以图示的命令中出现 HEAD 的地方可以用 master 来替换。

    IT茂茂
  • Vue 【前端面试题】

    看看面试题,只是为了查漏补缺,看看自己那些方面还不懂。切记不要以为背了面试题,就万事大吉了,最好是理解背后的原理,这样面试的时候才能侃侃而谈。不然,稍微有水平的...

    IT茂茂
  • python 初学者

    当下是一个喧嚣、浮躁的时代。我们总是被生活中大量涌现的热点所吸引,几乎没有深度阅读和思考的时间和机会。我始终认为,学习是需要沉下心来慢慢钻研的,是长

    IT茂茂
  • 学习纲要:Git & GitHub

    Joel
  • 11 个 Linux 上最佳的图形化 Git 客户端

    GitKraken:面向Linux的Git客户软件 主页链接:https://www.gitkraken.com/ 2. Git-cola Git-col...

    shaonbean
  • 【Git 第3课】 安装Git

    要用Git,首先肯定要安装它。简要说一下Win,Mac和Linux三种平台的安装方法。 Windows Git的官网(http://git-scm.com)提供...

    Crossin先生
  • 寓教于乐,用玩游戏的方式学习 Git!

    从刚接触电脑时的打字练习软件 金山打字通,到程序猿写代码的利器 Vim 都有小游戏(金山打字通游戏、VIM Adventures)来帮助我们入门。

    GitHubDaily
  • 分享11款主流的开源编程工具

    导读:有了开源编程工具,在基于开源许可证的情况下您可以轻松学习、修改、提高代码的质量,本文收集了11款最主流的且有价值的开源编程工具。或许会给您带来一丝惊喜。一...

    CSDN技术头条
  • 基于Kong开发一个token鉴权插件

    随着微服务场景的广泛应用,前端经常需要访问多个后端微服务,这时候往往需要一个API网关对请求做一些通用处理。通用处理指的是由网关层去实现一些非业务类的功能,比如...

    sophiasong
  • 【技术贴】物理学博士教你怎样分析微博数据,怎样涨粉

    网上已经有太多关于怎么增加微博粉丝数,以及怎样让我们发的微博获得更多转发的建议了。我们并不知道这些建议是否有效,因为它们大都是建立在个人感觉上,而缺乏真正有说服...

    CDA数据分析师

扫码关注云+社区

领取腾讯云代金券