参考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 #安装gcc yum install gcc #安装g++ yum install gcc-c++ #安装编译所需的包 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel yum install gcc perl-ExtUtils-MakeMaker wget -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用户下创建用户git id git #查看系统里面是否已经存在此账户 #如果存在删除此用户 userdel -r git #如果不存在直接添加即可 groupadd git useradd git -g git passwd git #为用户git设置一个登录密码,如果不配置ssh登录,每次clone等操作都需要此密码 开启ssh登录(不是必须) 如果不配置每次克隆,推送代码都要输入gjt用户密码,其实GitHub等网站采用的ssh登录方式都是采用的上传公钥方式。所以推荐配置。 #最好切换到git用户 不然后面新建的git仓库都要改权限 su git cd /home/git chmod 700 .ssh #ssh-keygen -t rsa //默认会生成~/.ssh/id_rsa.pub公钥文件。 mkdir /home/git/git-shell-commands #如果没有这个一会本机登录会有问题 ? #切换到root su cd /home/git/.ssh chmod 600 authorized_keys vim authorized_keys #把你客户端生成的公钥复制进去就OK了 #或者是上传本地id_id_rsa.pub 直接改名为authorized_keys(掉进此坑,半天之后才爬出来) #cat authorized >> authorized_keys ? vim /etc/ssh/sshd_config ? #开启公钥免密码登录 RSAAuthentication yes PubkeyAuthentication yes
初始化Git仓库
su git $ cd /home/git $ git init --bare zhao.git Initialized empty Git repository in /home/git/zhao.git/ #以上命令会创建一个空仓库,服务器上的Git仓库通常都以.git结尾。
本地克隆仓库测试
#如果没有更改过ssh默认的登录端口,默认22 $ git clone git@IP:zhao.git Cloning into 'test'... warning: You appear to have cloned an empty repository. ? #如果更改过ssh端口号 gcl ssh://git@IP:端口号/~/zhao.git
注意:在服务器上是看不到你上传的这个test.txt文件的。但是,你再次克隆是可以下载到这个文件的。
如图所示:
服务器上:可以看到该目录下什么东西都没有
如果需要同步代码到服务器参考:https://blog.csdn.net/xiaoweite1/article/details/80344289
代码同步到服务器
--(没有多大必要)
登录git用户,在其夹目录下创建一个文件夹www用来同步代码;
然后进入zhao.git/hooks/目录下
[git@VM_0_12_centos ~]$ cd zhao.git/hooks/ #这里我们创建post-receive文件 vim post-receive ? #在该文件里输入以下内容 #!/bin/bash git --work-tree=/home/git/www checkout -f ? #由于该文件其实就是一个shell文件,我们还应该为其设置可执行权限 chmod +x post-receive
然后本地再次推送代码,在www这个文件夹下是可以看到文件变动的,但是服务器并不能更改,所以我说并没有什么卵用。
禁止 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操作,大功告成:
添加一个新的项目到git服务器
1.服务器上先初始化一个仓库
2.本地拉取项目即可
删掉重新拉取一下,刚刚上传的文件可以拉取到:
喜欢文章的小伙伴可以点一波收藏加关注。