git服务器的简单搭建
2015-08-21 11:24
316 查看
搭建git服务器需要一台运行linux的机器,我的机器的系统是Ubuntu 14.04,下面以我的机器为例介绍下git服务器的搭建过程,最后介绍一个新项目的创建过程。
每个开发者获取SSH公钥方法:
在自己机器中,找到文件~/.ssh/id_rsa.pub,如果该文件不存在,则创建SSH Key。
将其改为:
即可将gitserver指向git仓库服务器
git ls-files --with-tree=HEAD 显示目录中有哪些文件
git cat-file -p commit-id:file 显示commit-id提交中file文件的内容
一、搭建git服务器需要安装的软件:git、openssh-server、openssh-client
其中openssh-server和opensssh-client使git能够使用SSH协议在客户端和服务器间传输文件。$ sudo apt-get install git openssh-server openssh-client
二、创建git用户
创建一个git用户,运行git服务。$ sudo adduser git
三、添加开发者SSH公钥
进入git用户主目录,创建目录.ssh,将所有开发者的SSH公钥添加到authorized_keys中,一行一个。假设已经获得的公钥存于临时文件中。$ su git $ cd $ mkdir .ssh $ cat /tmp/id_rsa.pub>>~/.ssh/authorized_keys
每个开发者获取SSH公钥方法:
在自己机器中,找到文件~/.ssh/id_rsa.pub,如果该文件不存在,则创建SSH Key。
$ ssh-keygen -t rsa文件~/.ssh/id_rsa.pub中存放的即为当前机器的SSH公钥。
四、创建git仓库
首先创建一个裸仓库(--bare),裸仓库没有工作区,因为服务器上的git仓库纯粹是为了共享,所以不让用户直接登录到服务器去改工作区,并且服务器上的git仓库通常以.git结尾。$ cd /opt/git $ mkdir project.git $ cd project.git $ git --bare init
五、禁用shell登录
需要注意的是,目前所有的开发者都能以系统用户git的身份登录服务器从而获得一个普通shell。若果想对此加以限制,需要修改passwd文件中git用户的shell值。$ sudo vim /etc/passwd找到类似下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bash
将其改为:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell这样,git用户只能利用SSH连接对git仓库进行推送和拉取操作,而不能登录机器并取得普通shell,如果试图登录,则会被拒绝。
$ ssh git@gitserver fatal:Interactive git shell is not enabled. ...
六、新项目创建过程
1、项目leader做一个项目基本原型,推送到git服务器
$ cd $ mkdir project $ git init $ git add . $ git commit -m "initial commit" $ git remote add origin git@gitserver:/opt/git/project.git $ git push origin master
2、项目成员从git服务器获取git仓库,修改,推送
<pre name="code" class="plain">$ git clone git@gitserver:/opt/git/project.git $ cd project work $ git commit -am "describe your work" $ git push origin master
说明:
1、DNS配置
假设git仓库服务器的主机名为gitserver,服务器运行在内网。$ sudo vim /etc/hosts在里面加入如下一行:
xx.xx.xx.xx(serverIP) gitserver
即可将gitserver指向git仓库服务器
2、查看git服务器仓库中的文件
git服务器没有工作区,文件都在仓库目录里git ls-files --with-tree=HEAD 显示目录中有哪些文件
git cat-file -p commit-id:file 显示commit-id提交中file文件的内容
相关文章推荐
- android压缩图片的算法
- WPF和XAML
- 自定义View实现之健康指数监控器
- 不平衡分类问题处理方法
- putty GB2312 & BIG5 中文字符集补丁
- Java重写equals
- Xamarin.Android快速入门
- jquery插件lazyload.js延迟加载图片的使用方法
- android侧滑菜单-DrawerLayout的基本使用
- 获得AX Role下面的duties和privileges 列表
- Android版本与API对应关系
- 在C#中.cs文件 .xaml文件 .config文件 .asax各是干什么的
- C语言中sscanf 的详细用法
- poj 2503 哈希 Map 字典树
- QTreewidgetItem关键字高亮
- html5图片裁剪控件原型【含缩放,旋转,拖动功能】---1、控件设计
- miniwebx 基于webx设计思想的轻量级mvc框架
- GrailsDispatcherServlet中的doDispatch方法
- 【sql】mysql left join,right join,inner join超详细用法解析
- byte转换为十六进制时,Integer.toHexString需要&FF的原因