环境:centos和ubuntu系统都可以
CentOS release 6.7
git version 1.7.1
git-server 192.168.50.108
git-client 192.168.50.112
备注:基于linux系统下做ssh模式的gitserver,需要ssh免密钥,因为git用户是禁止登录的,clone时没有免ssh后会需要密码导致无法操作。
部署:
git-server:
1.安装git软件(客户端和服务器端使用的是同一个软件)
yum install git -y
2.初始化仓库(鉴于此处是共享仓库,所有要建立裸仓库)
mkdir /data/sample.git
git init --bare /data/sample.git
chown git.git /data/sample.git -R
3.配置git用户使用的shell为git-shell
which git-shell(返回结果/usr/bin/git-shell)
chsh -s /usr/bin/git-shell git
git-client:
1.安装git软件
yum install git -y
2.配置用户的ssh密钥信息,并提供给git-server
ssh-keygen -t rsa -C "sample@localhost.com" (与git config的信息一致,记录文件log信息,可查看是谁修改的。)
假如你是用的是本台机器root用户,生成的密钥默认在/root/.ssh/下
scp /root/.ssh/id_rsa.pub root@192.168.50.108:/tmp
git-server:
允许另外一天机器的用户无密钥访问git用户的信息
mkdir /home/git/.ssh && cat id_rsa.pub >>/home/git/.ssh/authorized_keys
git-client:
1.clone远程server的裸仓库
git clone git@192.168.50.108:/data/sample.git
2.添加远程仓库作为源仓库
git remote add origin git@192.168.50.108:/data/sample.git
git remote -v(查看存在的仓库源)
2.默认clone的是master仓库,可以直接在master更新
cd sample/
echo "this is a test file" >test
3.配置git全局信息
git config --global user.name ‘test‘
git config --global user.email ‘sample@localhost.com‘
4.添加并提交文件
git add test
git commit -m "this is fire commit"
5.把修改后的文件推送的git-server源做共享
git push -u origin master
注:由于代码存在多个版本,且介于安全考虑master会被限制,用户可以自己创建分支,然后请求合并。 所以大多数修改并不是直接在master上。以下是分支操作
1.clone maste后创建分支
git checkout -b fenzhi
git branch(查看当前所在分支)
2.添加并提交文件
echo "hello world " >fenzhifile
git add
git commit -m ‘fenzhi‘
3.把新建的分支推送到git-server源做共享
git push origin fenzhi
git-client:测试
1.测试master:换台机器(同样需要免ssh)或换个目录测试
cd /tmp
git clone git@192.168.50.108:/data/sample.git
查看只有一个test文件,这个是我们刚才在master上添加的。
cd sample/ && cat test
2.测试fenzhi
git clone git@192.168.50.108:/data/sample.git -b fenzhi
同样刚才的fenzhi文件也存在,test也存在。因为我们是在master主要功能上修改的。如果文件没有相同的,那就是不同的项目。
git帮助手册
本文出自 “菜鸟成长记” 博客,请务必保留此出处http://startlinux.blog.51cto.com/10045010/1754045
【ssh简单版git-server 1】自建git-server
原文地址:http://startlinux.blog.51cto.com/10045010/1754045