步骤
- 安装依赖
$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
$ tar -zxf git-2.9.3.tar.gz # 解压
$ cd git-2.9.3 # 进入目录
$ make prefix=/usr/local/git all doc info # 编译
$ make prefix=/usr/local/git install install-doc install-html install-info # 安装
- 将 git 命令添加到环境变量
$ echo "export PATH=\$PATH:/usr/local/git/bin" >> /etc/profile # 将 git 命令添加到环境变量 PATH
$ source /etc/profile # 立即生效
- 创建 git 用户
$ useradd -s /usr/local/git/bin/git-shell git # 创建 git 用户,为了安全,让 git 用户使用 git-shell
$ passwd git # 为 git 创建密码
$ cp -R /usr/local/git-2.9.3/contrib/git-shell-commands /home/git/ # 将命令拷贝到 git 家目录下,git账户ssh连接后才能使用 git
命令
$ chown -R git:git /home/git/git-shell-commands # 改变目录的所有者
$ chmod -R +x /home/git/git-shell-commands # 添加执行权限
PS: 免密码登录请参考ssh免密码登录服务器
- 创建 git 裸仓库及相关目录
服务器端只能创建裸仓库,内容跟客户端.git目录下的文件一致,存储工作目录中文件的变化。
$ sudo -u git mkdir /git # 创建 仓库存放目录
$ sudo -u git mkdir /git/demo.git # 创建裸仓库目录
$ sudo -u git git init --bare /git/demo.git # 使用 git 用户将目录初始化为一个裸仓库
- 客户端操作
$ git remote add origin git@serveraddress:/git/demo.git # 客户端关联服务器端仓库
$ git push -u origin master # push 代码到服务器,初次使用需加 -u 选项
注意:客户端需要先添加文件到缓存区并提交了版本才能push到服务器!
- 更改 git-shell 的 list 命令(可选)
用 git 帐号通过 ssh 登录到服务器,这时使用的是 git-shell,其中的 list 命令可列出当前服务器端的 git 项目,可是默认查找的地址是家目录下,我们这里将 git 仓库更改为了 /git,所以需要更改 list 文件
$ cat /home/git/git-shell-commands/list # 原文件
....
find -type d -name "*.git" -exec sh -c "$print_if_bare_repo" -- \{} \; -prune 2>/dev/null
$ vi /home/git/git-shell-commands/list # 修改文件
find /git -type d -name "*.git" -exec sh -c "$print_if_bare_repo" -- \{} \; -prune 2>/dev/null
更改完毕,客户端登录 ssh git@serveraddress
, 然后使用 list
命令即可列出当前仓库下的 git 项目
报错解决
-
/bin/sh: cc: command not found
解决:安装 gcc,yum install gcc -y
BEGIN failed--compilation aborted at Makefile.PL line 3.
make[1]: *** [perl.mak] Error 2
make: *** [perl/perl.mak] Error 2
解决:yum install perl-devel
, 如果不行,使用yum install perl-CPAN
- /bin/sh: line 1: docbook2x-texi: command not found
解决:yum install docbook2X
ln -s /usr/bin/db2x_docbook2texi /usr/bin/docbook2x-texi
参考
https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git
https://github.com/git/git/blob/master/INSTALL
https://linux.die.net/man/1/git-shell
http://blog.newbmiao.com/2014/12/28/build-your-git-server-on-linux.html
网友评论