在远程仓库一节中,我们讲了远程仓库实际上和本地仓库没啥不同,纯粹为了7x24小时开机并交换大家的修改。

GitHub就是一个免费托管开源代码的远程仓库。但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给GitHub交保护费,那就只能自己搭建一台Git服务器作为私有仓库使用。

搭建Git服务器需要准备一台运行Linux的机器,强烈推荐用Ubuntu或Debian,这样,通过几条简单的apt命令就可以完成安装。

假设你已经有sudo权限的用户账号,下面,正式开始安装。

第一步,安装git:

$ sudo apt-get install git

第二步,创建一个git用户,用来运行git服务:

$ sudo adduser git

第三步,创建证书登录:

收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。

第四步,初始化Git仓库:

先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令:

$ sudo git init --bare sample.git

Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git:

$ sudo chown -R git:git sample.git

第五步,禁用shell登录:

出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:

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

改为:

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

这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。

第六步,克隆远程仓库:

现在,可以通过git clone命令克隆远程仓库了,在各自的电脑上运行:

$ git clone git@server:/srv/sample.git

Cloning into 'sample'...

warning: You appear to have cloned an empty repository.

剩下的推送就简单了。

管理公钥

如果团队很小,把每个人的公钥收集起来放到服务器的/home/git/.ssh/authorized_keys文件里就是可行的。如果团队有几百号人,就没法这么玩了,这时,可以用Gitosis来管理公钥。

这里我们不介绍怎么玩Gitosis了,几百号人的团队基本都在500强了,相信找个高水平的Linux管理员问题不大。

管理权限

有很多不但视源代码如生命,而且视员工为窃贼的公司,会在版本控制系统里设置一套完善的权限控制,每个人是否有读写权限会精确到每个分支甚至每个目录下。因为Git是为Linux源代码托管而开发的,所以Git也继承了开源社区的精神,不支持权限控制。不过,因为Git支持钩子(hook),所以,可以在服务器端编写一系列脚本来控制提交等操作,达到权限控制的目的。Gitolite就是这个工具。

这里我们也不介绍Gitolite了,不要把有限的生命浪费到权限斗争中。

小结

搭建Git服务器非常简单,通常10分钟即可完成;

要方便管理公钥,用Gitosis;

要像SVN那样变态地控制权限,用Gitolite。

windows 本地搭建git仓库_搭建Git服务器相关推荐

  1. 自己本地搭建svn仓库_搭建svn仓库

    预期目的: 1.仓库放在 /var/svn/ 目录下,并且仓库名为 project 2.创建用户组lsgogroup,该组下添加两个成员lsgoweb1.lsgoweb2,密码直接用用户名,两用户可以 ...

  2. Git使用(Git安装、建立Git仓库、克隆Git仓库、提交代码至Git仓库)

    目录 1 Git安装 2 建立Git仓库 3 克隆Git仓库 3.1 新建Spring Boot项目 ​3.2 克隆Git仓库 4 提交代码至Git仓库 4.1 Pull ​4.2 Commit 4. ...

  3. 搭建自己的git仓库之简单搭建本地git仓库和远程git仓库~

    一.安裝git 1.在https://git-scm.com/downloads下载安装git: 2.安装成功后在开始菜单中或任意一个文件夹中点击鼠标右键打开git bash: 3.在命令行輸入:  ...

  4. 自己本地搭建svn仓库_「PHP编程」如何制作自己的Composer包?

    PHP开发免不了要使用Composer,使用Composer有着明显的好处.一是可以很好的解决第三方包的相互依赖,二是可以方便进行代码的重用. 那如何制作自己的Composer包呢? 制作Compos ...

  5. 将在本地创建的Git仓库push到Git@OSC

    为什么80%的码农都做不了架构师?>>>    本人小白一个,最近刚接触Git,发现挺好用的,而且OSC还提供了免费的托管仓库,打算把自己电脑上的代码和在公司无聊时写的代码给同步到O ...

  6. python私有仓库_创建git私有仓库

    以ubuntu服务器为例,如果要创建小范围的私有git服务器,是非常简单的,只需要如下几个简单步骤: Step 1: 安装git 直接通过sudo apt-get install git即可完成. S ...

  7. git文件共享_与Git共享文件

    git文件共享 Git是那些设法将大量现代计算封装到一个程序中的罕见应用程序之一,最终成为许多其他应用程序的计算引擎. 尽管它最着名的是跟踪软件开发中的源代码更改,但它还有许多其他用途,可以使您的生活 ...

  8. 中文提交到git乱码_解决git 提交后中文字符会乱码的问题

    解决git 提交后中文字符会乱码的问题 最近发生那了一件怪事,当然菜鸡经常碰见怪事 本来一个.properties文件在idea里面commit的时候看了一下diff,没发现异常,但是提交到gitla ...

  9. git服务器查看用户信息,git 查看当前git用户_新Git用户使用方法

    git 查看当前git用户 This post is a tutorial for new users to set up git and clone and use the first reposi ...

最新文章

  1. python redis 消息队列_python中利用redis构建任务队列(queue)
  2. socket.io的 Python客户端中文encode问题
  3. source insight快捷键及使用技巧
  4. 会计记忆总结之二:会计要素和会计科目
  5. [WP7开发入门]在Windows 2003,XP上安装Windows Phone 7开发工具
  6. Mac下安装和使用GunPG(GPG)
  7. qt c++ 图片预览_这是Google Pixel 4上的新动态壁纸的预览
  8. 【渝粤题库】陕西师范大学202011 微观经济学 作业 (专升本、高起本)
  9. Python os.chdir() 方法
  10. 全奖博士招生,美国中佛罗里达大学计算机视觉研究中心
  11. 【小安翻唱】檄!帝国华撃団
  12. gulp工具rename
  13. hmcl启动器java下载_HMCL启动器
  14. springboot实现图片验证码登录
  15. HDU 6080 度度熊保护村庄 (叉积判断点线关系+图论)
  16. UG NX 10 重新附着草图
  17. 计算机专业选择福大还是南邮,48所院校考研历年报录比汇总,21考研可参考!...
  18. java 调用飞信发短信(转)
  19. linux shell 关机,linux shell关机命令详解
  20. Settings provider system和global表格数据访问

热门文章

  1. 如何使用dbx分析core文件_[转]使用DBX分析AIX 下的 CoreDump
  2. 共享打印机出现0x00000569代码解决方案(亲测有效)
  3. Android对渐变颜色的处理
  4. Web操作系统漏洞发现——工具使用总结
  5. 学生信息管理系统:实现对学生信息增删改查操作
  6. 微软打击盗版,我们坚决支持
  7. Python 程序扩展名(py, pyc, pyw, pyo, pyd)及发布程序时的选择
  8. esp32录音功能开发_自制基于ESP32的音频播放器
  9. C++代码规范 学习笔记
  10. cmake是什么,为什么现在都用cmake,cmake编译原理和跨平台示例