创建git服务器
1、安装git
yum install -y git
2、创建git用户
adduser git
3、初始化Git仓库
git init --bare sample.git
说明:
1)sample.git为项目仓库目录,按习惯将代码仓库目录以.git后缀命名,
2)git克隆目录即为:git@servername:/srv/sample.git,“@”前面的git为第2步添加的git帐户名,servername服务器域名或ip,“:”后面为git仓库在服务器上的路径
chown -R git:git sample.git
用root用户操作时需注意,将此仓库路径上的目录和文件所有者全部设为git
4、需要登录的用户生成ssh密钥和公钥
执行:ssh-keygen
生成文件:id_rsa 、id_rsa.pub
ssh-keygen -t rsa -C 'comment' -f 'ra.txt'
-t 加密方式
-C 注释
-f 保存路径
ssh说明:
id_rsa : 生成的私钥文件
id_rsa.pub : 生成的公钥文件
know_hosts : 已知的主机公钥清单
authorized_keys:存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥
ssh公钥生效需满足下面条件:
1) .ssh目录的权限必须是700
2) .ssh/authorized_keys文件权限必须是600
3) .ssh/id_rsa文件权限必须是600
这里生成的密钥和公钥是给要连接的客户端用的,也可在其他地方生成,不是git服务品需要,git服务器只需要知道公钥
.ssh目录所有者为要免密登录的用户,注意用户权限
5、收集名密登录用户公钥
收集所有需要登录的用户的公钥(id_rsa.pub),在服务器git用户家目录下,把所有公钥导入到/home/git/.ssh/authorized_keys文件里(若不存在则手动添加),一行一个公钥字符串。
注意:这里创建的仓库目录,还有收集公钥的文件都是git用户用到的,一定要将其所有者修改为git用户
有时候会遇到创建了密钥却还提示要输入密码,就是这个原因
6、禁用shell登录
创建的git用户不允许登录shell,通过编辑/etc/passwd文件完成
git:x:1001:1001:,,,:/home/git:/bin/bash
改为:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
可通过使命修改:
$ cat /etc/shells # 检查 `git-shell`是否存在于此文件,如果没有继续以下两步操作
$ which git-shell # 确保 git-shell已经安装,一般安装git都会有
$ sudo vim /etc/shells # 将git-shell所在的路径追加在这个文件中
chsh git
输入git-shell路径: /usr/bin/git-shell (这个是安装git后自带的,可通过which git-shell获得)
若要使用 git-shell,需要用它替换掉 bash 或 csh,使其成为系统用户的登录 shell。
为进行上述操作,首先你必须确保 git-shell 已存在于 /etc/shells 文件中。
/etc/shells是一个有效登陆shell的列表,在调用chsh改变登陆shell时,会查询这个文件。
7、 克隆项目到本地
git clone git@server:/srv/sample.git .
"."表示当前目录
8、客户端使用
1)前面1-6步创建git服务器
2)在用户目录记录.ssh目录:C:\Users\jingyu\.ssh
3)将生成的公钥、私钥复制到.ssh目录下
4)sourcetree设置:
进入 “工具》选项》一般 ”:
ssh客户端配置/ssh密钥 选中id_rsa
ssh客户端选择OpenSSH
5)克隆项目
6)与svn结合:
公司项目服务器用svn做仓库,git为开发者本地使用:
a)checkout svn项目,创建为svn分支
b)svn分支只用来同步svn代码,同步一次提交一次svn分支节点
c)开发时另建开发分支dev
d)需要提交svn时,才将开发分支dev合并到svn分支,
e)提交svn到远程代码仓库,同时提交git的svn分支保存此节点