ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 第一步,安装git 1. 查看git版本:https://github.com/git/git/releases?_blank 2. 查看git安装说明:https://github.com/git/git/blob/master/INSTALL?_blank `yum info git`可以看到服务器上自带的是1.8.3.1版本,我也升级下最新的是2.16.2(2018-03-05) ## 开始安装git 进入/home/soft目录,直接下载安装git,先不用安装一大推的扩展,等安装过程中报错了,看需要哪个扩展再装哪个~ ```bash cd /home/soft/ wget https://github.com/git/git/archive/v2.16.2.tar.gz tar -zxvf v2.16.2.tar.gz cd git-2.16.2 mkdir /usr/local/git make prefix=/usr/local/git #报错了,libiconv错误 ``` 下载安装libiconv ```bash cd /home/soft wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz tar -zxvf libiconv-1.14.tar.gz cd libiconv-1.14 ./configure --prefix=/usr/local/libiconv && make && make install ``` 编译libiconv发生./stdio.h:1010:1: 错误:'gets'未声明(不在函数内) 解决如下: ```bash cd srclib/ #进到出错文件的目录 sed -i -e '/gets is a security/d' ./stdio.in.h #编辑出错文件 cd ../ #回到编译对象目录 make #重新Make安装 ``` 至此libiconv安装结束 ## 继续编译安装git ```bash cd /home/soft/git-2.16.2 make clean #清理之前的编译文件 make prefix=/usr/local/git #重新执行安装,但是依旧报错,libiconv错误 ``` ## 换一种方式,使用configure,增加libiconv ```bash make clean make configure ./configure --prefix=/usr/local --with-iconv=/usr/local/libiconv/ make install ``` 安装成功! ## 创建软连接 `ln -s /usr/local/git/bin/git /usr/bin/git` ## 查看版本 `git --version` # 第二步,创建git用户,导入公钥。 ## 创建用户与组 ```bash groupadd git useradd git cd /home/git/ mkdir .ssh #新建文件夹 chmod 700 .ssh touch .ssh/authorized_keys #新建文件 chmod 600 .ssh/authorized_keys ``` ## 本地创建公钥 ```bash ssh-keygen -t rsa -C "893371810@qq.com" cd /home/lypeng/.ssh/ ``` ## 拷贝到服务器 `scp id_rsa.pub lypeng@your_ip:/home/lypeng/id_rsa.pub` ## 登录服务器,将公钥导入到auth验证文件 ```bash vim /home/git/.ssh/authorized_keys :r /home/lypeng/id_rsa.pub :wq ``` ## 开启ssh中的RSA认证 vim /etc/ssh/sshd_config RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys ## 创建仓库 cd /home/git git init --bare test.git ## 本地克隆仓库,提交测试 mkdir /home/gitrepo cd /home/gitrepo git clone git@your-ip:test.git echo 123456 > a.txt git add a.txt git commit -m 'first' git remote add mytestrepo git@your_ip:test.git git push -u mytestrepo master 发生错误如下: git@your_ip's password: 对象计数中: 3, 完成. 写入对象中: 100% (3/3), 200 bytes | 0 bytes/s, 完成. Total 3 (delta 0), reused 0 (delta 0) error: unpack failed: unable to create temporary object directory To git@your_ip:test.git ! [remote rejected] master -> master (unpacker error) error: 无法推送一些引用到 'git@your_ip:test.git' `unable to create temporary object directory`,无法创建临时目录,看样子应该是权限问题,怀疑是.git文件夹写权限问题。 给个test.git整体777试试 ```bash chmod 777 test.git -R git push mytestrepo ``` ok,提交成功! 至此,clone push等测试结束! 关于网站同步与多用户多仓库的用户权限问题,之后测试完再总结~ 参考: 1. http://blog.csdn.net/permanent_2008/article/details/73839315?_blank 2. http://www.dataguru.cn/thread-562562-1-1.html?_blank 如果你只有一个人去操作,到这儿就结束了,剩下的就是目录规划以及多用户多项目权限分配问题。目前是有一个git分组,下面有一个git用户,可以在新增两个用户,同属于git组 创建用户,修改用户所属组~ 导入用户公钥 创建仓库 某个仓库只允许指定的用户push? git分组 |--git |--lypeng29 |--tom3472 仓库: /home/git/ |--test.git |--ycms.git |--shop.git 好了,安装结束,目前想到就这么多,之后遇到问题,再来总结~