![baec67bdbc395c95fb5d2ae8c63fb5be.png](https://i-blog.csdnimg.cn/blog_migrate/e33db88ede9c205dd2766ecf0362548e.jpeg)
参考1:https://www.cnblogs.com/fly_dragon/p/8718614.html
参考2:https://blog.csdn.net/dumingming_stj/article/details/80551312
删除老版本Git,自带的好像是1.8
yum remove git安装新版Git#安装gccyum install gcc#安装g++yum install gcc-c++#安装编译所需的包yum install curl-devel expat-devel gettext-devel openssl-devel zlib-develyum install gcc perl-ExtUtils-MakeMakerwget -P /usr/src/git-2.19.1 https://www.kernel.org/pub/software/scm/git/git-2.19.1.tar.gz#切换到指定目录cd /usr/src/git-2.19.1/#解压源码包tar zxvf git-2.19.1.tar.gz#进入解压目录cd git-2.19.1/#配置安装目录并编译和安装(耐心等待……)./configure --prefix=/usr/local/git-2.19.1 && make install#将编译好的git-2.18.0 bin目录添加到bashrc中,相当于添加全局变量echo 'export PATH=$PATH:/usr/local/git-2.19.1/bin' > /etc/profile.d/git.sh#使bashrc立即生效,全局变量立即生效source /etc/bashrc#查看git版本,如果是版本是git version 2.18.0即大功告成git --version#如果发现还是老版本,再执行一次即可yum remove git#至此,CentOS 就安装上了最新版本的 Git。
创建一个git用户
#root用户下创建用户gitid git #查看系统里面是否已经存在此账户#如果存在删除此用户userdel -r git#如果不存在直接添加即可groupadd gituseradd git -g gitpasswd git #为用户git设置一个登录密码,如果不配置ssh登录,每次clone等操作都需要此密码开启ssh登录(不是必须)如果不配置每次克隆,推送代码都要输入gjt用户密码,其实GitHub等网站采用的ssh登录方式都是采用的上传公钥方式。所以推荐配置。#最好切换到git用户 不然后面新建的git仓库都要改权限su gitcd /home/gitchmod 700 .ssh#ssh-keygen -t rsa //默认会生成~/.ssh/id_rsa.pub公钥文件。mkdir /home/git/git-shell-commands #如果没有这个一会本机登录会有问题#切换到rootsucd /home/git/.sshchmod 600 authorized_keysvim authorized_keys#把你客户端生成的公钥复制进去就OK了#或者是上传本地id_id_rsa.pub 直接改名为authorized_keys(掉进此坑,半天之后才爬出来)#cat authorized >> authorized_keysvim /etc/ssh/sshd_config#开启公钥免密码登录RSAAuthentication yesPubkeyAuthentication yes
初始化Git仓库
su git$ cd /home/git$ git init --bare zhao.gitInitialized empty Git repository in /home/git/zhao.git/#以上命令会创建一个空仓库,服务器上的Git仓库通常都以.git结尾。
本地克隆仓库测试
#如果没有更改过ssh默认的登录端口,默认22$ git clone git@IP:zhao.gitCloning into 'test'...warning: You appear to have cloned an empty repository.#如果更改过ssh端口号gcl ssh://git@IP:端口号/~/zhao.git
注意:在服务器上是看不到你上传的这个test.txt文件的。但是,你再次克隆是可以下载到这个文件的。
如图所示:
![3255376904ea926d909ce17c620e6125.png](https://i-blog.csdnimg.cn/blog_migrate/378930418fa7b665a1e7bafdd00cfbf4.jpeg)
服务器上:可以看到该目录下什么东西都没有
如果需要同步代码到服务器参考:https://blog.csdn.net/xiaoweite1/article/details/80344289
代码同步到服务器
--(没有多大必要)
登录git用户,在其夹目录下创建一个文件夹www用来同步代码;
![bfd07f4baeb2eca4eb95b4076c582f70.png](https://i-blog.csdnimg.cn/blog_migrate/c4deda7efd7a028da523c8689f4a67ff.jpeg)
然后进入zhao.git/hooks/目录下
[git@VM_0_12_centos ~]$ cd zhao.git/hooks/#这里我们创建post-receive文件vim post-receive#在该文件里输入以下内容#!/bin/bashgit --work-tree=/home/git/www checkout -f#由于该文件其实就是一个shell文件,我们还应该为其设置可执行权限chmod +x post-receive
然后本地再次推送代码,在www这个文件夹下是可以看到文件变动的,但是服务器并不能更改,所以我说并没有什么卵用。
![902c284de9ec95f24e64919c11fb7168.png](https://i-blog.csdnimg.cn/blog_migrate/5d112e7135f181fb429ece59fec2fa46.jpeg)
禁止 git 用户 登录服务器
之前在服务器端创建的 git 用户不允许 ssh 登录服务器,不然会有很多安全问题出现
编辑 /etc/passwd[root@localhost .ssh]# vim /etc/passwd找到:git:x:502:504::/home/git:/bin/bash修改为git:x:502:504::/home/git:/usr/local/git-2.19.1/bin/git-shell
设置成功之后,尝试从root切换到git用户登录只能进行git操作,大功告成:
![182403736d163fe73ad1882cb0971e59.png](https://i-blog.csdnimg.cn/blog_migrate/2e08f37c827892d0fc1ad516c6ccabb5.jpeg)
添加一个新的项目到git服务器
1.服务器上先初始化一个仓库
![388fd0f2faf33a54fa48d3cde0e58c56.png](https://i-blog.csdnimg.cn/blog_migrate/746dbf1d5dffa40161bf03de6b7f7c55.jpeg)
2.本地拉取项目即可
![2c80b3586359f2b11d41351e8aecfd44.png](https://i-blog.csdnimg.cn/blog_migrate/25f55517537ce772f8c74e85599ce170.jpeg)
删掉重新拉取一下,刚刚上传的文件可以拉取到:
![d188276f6167183e318b00b9ce8ac6bc.png](https://i-blog.csdnimg.cn/blog_migrate/9646b8d8aa8d3bce497517953691fce3.jpeg)
喜欢文章的小伙伴可以点一波收藏加关注。