yhuihon 2020-08-09
服务端:centos7
客户端:win10
注意:
a.先查看自己是否安装git或者其版本,如果安装了且版本较低(最新版>=2.x)则卸载(yum remove git),没安装则继续本节
git --version #查看git版本,没装则command not found
b.安装依赖的库
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel yum install gcc perl-ExtUtils-MakeMaker
c.通过github源码下载git(保障获得最新版本,缺点:编译时间长)
cd /usr/local/git/ #创建git文件夹在/usr/local/中 wget https://github.com/git/git/archive/v2.21.0.tar.gz # 获得git的2.21.0版本 tar -xzvf v2.21.0.tar.gz #解压下载好的安装包到当前目录
d.接着编译安装git
cd git-2.21.0 #打开解压后的目录 make prefix=/usr/local/git all make prefix=/usr/local/git install
e.完成后还需要添加环境变量,使得git命令有效
vim /etc/profile #如果没有vim,则安装vim工具 yum install vim #打开后在最后一行添加这一条:export PATH="/usr/local/git/bin:$PATH" #保存退出后执行下一条命令 source /etc/profile #使得配置立即生效
f.还记得第一条命令吗,再试试
git --version
注意:服务端的用户和客户端的用户不是一个意思,服务端的用户是用于建立和管理服务端仓库用的,客户端创建的用户是为了方便来记录是哪些人提交的修改或者签名用
此处的作用是创建用户并创建用于存放客户端公钥的文件,注意必须进入到Tom的目录下
adduser tom #创建一个名为tom的用户 chown -R tom:git # su - tom #设置tom为管理员 mkdir .ssh #开始为Tom创建.ssh证书和设置权限 chmod 700 .ssh #赋予权限 touch .ssh/authorized_keys #修改文件时间属性,不用管 chmod 644 .ssh/authorized_keys #设置权限,这个权限必须是属于tom的,不然无效 vim .ssh/authorized_keys #加入客户端用户公钥,一行加一个
# 把公钥保存在authorized_keys文件中, # 如何生成公钥:请跳转到本文第二节<客户端配置中>的<配置本地用户>来获取公钥
在文件/etc/ssh/sshd_config中添加下列三行内容: RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
cd /data/git //切换到希望创建工作区的目录 git init --bare sample.git #创建一个空的Git仓库sample.git,此时Git会创建一个唯一分支master chown -R tom sample.git #将sample.git的所有权从root修改到新创建的tom
a.首先配置(创建)用户:
git config --global user.name "Username" git config --global user.email "邮箱"
b.然后生成用户公钥
ssh-keygen -t rsa -C "邮箱" #填写你刚才配置用户填的邮箱,则会生成公钥
c.复制公钥内容(不要用win10自带笔记本软件打开,复制的公钥会有问题)
将id_rsa.pub中的内容复制粘贴到服务端中我们在tom用户中创建的/.ssh/authorized_keys中
完成这步骤后,其实这时候我们就已经可以从远程服务器中进行Git相关操作了
d.测试公钥是否放置好
git clone :/data/git/sample.git #127.0.0.1改成你服务器的地址,tom是服务器上git用户
#首先打开到你要版本控制的目录路径下 git init #将该目录初始化为一个git仓库
git add . # 它会把工作时的所有变化提交到暂存区 git commit -m ‘first commit‘ #提交并加入提交信息 git remote add origin :/www/ue4/sample.git #设置远程服务器地址,一次即可 git push origin master #把文件提交到远程服务器上