IP | Hostname | 备注 |
---|---|---|
192.168.88.31 | server | git服务端 |
192.168.88.33 | client | git客户端 |
环境说明:firewalld关闭,selinux关闭。
需求:
下载源码包编译安装或者yum安装
服务端创建git用户,配置空仓库
创建无秘钥登录证书
客户端命令使用:克隆、修改git配置、 添加修改文件到暂存区、 提交修改到本地仓库、 提交修改到远程服务器。
1.服务端安装Git
①yum源安装
[root@server ~]# yum -y install git
②编译安装
wget https://www.kernel.org/pub/software/scm/git/git-2.10.0.tar.gz
[root@client ~]# tar -zxvf git-2.10.0.tar.gz
[root@client ~]# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker //安装所需依赖包
[root@client ~]# yum remove git //卸载旧版git
[root@client ~]# cd git-2.10.0
[root@client git-2.10.0]# make prefix=/usr/local/git all //编译
[root@client git-2.10.0]# make prefix=/usr/local/git install //安装
[root@client git-2.10.0]# vim /etc/profile //底部加上Git相关配置信息
PATH=$PATH:/usr/local/git/bin
[root@client git-2.10.0]# source /etc/profile
[root@client git-2.10.0]# git --version
git version 2.10.0
2.服务端创建git用户并创建空仓库
[root@server ~]# useradd -m git //创建git用户
[root@server ~]# passwd git //创建git用户密码
更改用户 git 的密码 。
新的 密码:
无效的密码: 密码是一个回文
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[git@server ~]$ su - git //变更帐号为git并改变工作目录至git的家目录
密码:
上一次登录:一 3月 16 16:16:49 CST 2020pts/0 上
[git@server ~]$ pwd
/home/git
[git@server ~]$ mkdir project.git //创建git仓库目录
[git@server ~]$ cd project.git/
[git@server project.git]$ git init --bare //git仓库的初始化
初始化空的 Git 版本库于 /home/git/project.git/
[git@server project.git]$ chown -R git:git /home/git/project.git/ //授权
3.客户端访问方式
[root@server ~]# git clone file:///home/git/project.git/ //本地访问
正克隆到 'project'...
warning: 您似乎克隆了一个空版本库。
[root@client ~]# git clone git@192.168.88.31:/home/git/project.git //远程访问
正克隆到 'project'...
git@192.168.88.31's password:
warning: 您似乎克隆了一个空版本库。
git clone http://192.168.88.31:/home/git/project.git
//web访问,服务端需搭建web服务器
4.创建无秘钥登录证书
[root@server ~]# su - git
[git@server ~]$ ssh-keygen -t rsa //两机都需执行
Generating public/private rsa key pair.
Enter file in which to save the key (/home/git/.ssh/id_rsa):
Created directory '/home/git/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/git/.ssh/id_rsa.
Your public key has been saved in /home/git/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:aTQb6oQ0fqNQo7WdvcyfAAOWuA4Zja3Phlw7y2oBpF8 git@server
The key's randomart image is:
+---[RSA 2048]----+
| |
| = . . |
|= + X + |
|o+ OEB = = |
|=.+o+ X S |
|.Bo..= B . |
|..*o. . = |
| o. o o . |
|...o o |
+----[SHA256]-----+
[git@server ~]$ cd .ssh/
[git@server .ssh]$ cat id_rsa.pub >> authorized_keys
[git@server .ssh]$ chmod 600 authorized_keys
[git@server .ssh]$ chmod 700 ~/.ssh
[git@server .ssh]$ su - root
密码:
上一次登录:一 3月 16 17:46:04 CST 2020从 192.168.88.31pts/1 上
[root@server ~]# scp /home/git/.ssh/authorized_keys 192.168.88.33:/root/.ssh
[root@client ~]# chmod 600 /root/.ssh/authorized_keys
[root@client ~]# cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDD3vXM4gyjjeSMX+Wlh2HjBaPCqXeltTyox0iuyESGMq+lnOJ18UvYViHzoB7re0/VKRO6L5wlCBR4CF78Mr7G74tVTi3A5HndtAamIwZr/Vd1ucGDkl7ctzKiIP9mben3bbBZ/1kZtR8mFjD5TDbt+20+EMn1WWHvqZcvuAye08TfVTrjSi4RetEvQOMV36TgE6V8BucdIHfo+bvUIxd4N4HL7p2dW5iuXR47FeqBdtzEjby4LsePrfk+MKN58JAJCqWT2LgIb/M1NirA23Kw6twVQPxC4wKxhTEyh7PcMXKlYyWAjd9IGoKHH5m+pFCSgXo9fscHBSw7uwree5pL root@client
[root@server ~]# vi /home/git/.ssh/authorized_keys //将client的公钥复制到server的authorized_keys里
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCavi2Vmk26YwQkoSuo73ydt95afdDvD8NhM22+TGeY4HEUak0wAG0hYD2
rR7WoS/ri1uOvt+XfASlMGMpvvKvJex2HSio4cnjRqFKJWETjCxxSvWl5UicauhZYe9QsdSgOnK1d/GMkyJyAY8XhMJX0NR
y66O21u7NsxSasBmETuePqkWfM2uODiHh9D0gOVPDv3y7qeXSPdSTS/z4yc7X5iPuXLsqHt4ihqvWl0B10aNCww1gDuNpEM
XqM5Pdwf6IN4co3V2BEiDERsDNvhBEXiWxbmYS3cZ8QZJQbJaTI//8uMXEDTz1NdArpOtk/cN3ETeBrCW4nCErh52X265a7
git@server
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDD3vXM4gyjjeSMX+Wlh2HjBaPCqXeltTyox0iuyESGMq+lnOJ18UvYViH
zoB7re0/VKRO6L5wlCBR4CF78Mr7G74tVTi3A5HndtAamIwZr/Vd1ucGDkl7ctzKiIP9mben3bbBZ/1kZtR8mFjD5TDbt+2
0+EMn1WWHvqZcvuAye08TfVTrjSi4RetEvQOMV36TgE6V8BucdIHfo+bvUIxd4N4HL7p2dW5iuXR47FeqBdtzEjby4LsePr
fk+MKN58JAJCqWT2LgIb/M1NirA23Kw6twVQPxC4wKxhTEyh7PcMXKlYyWAjd9IGoKHH5m+pFCSgXo9fscHBSw7uwree5pL
root@client
[root@client ~]# ssh git@192.168.88.31 //免密登陆测试
Last login: Mon Mar 16 18:48:27 2020 from 192.168.88.33
[git@server ~]$ exit
登出
Connection to 192.168.88.31 closed.
[root@server ~]# vi /etc/passwd //修改后会导致git用户无法切换
git:x:1000:1000::/home/git:/bin/git-shell //修改/bin/git-shell
5.客户端命令使用
clone 将远程服务器仓库克隆到本地
config 修改git配置
add 添加修改文件到暂存区
commit 提交修改到本地仓库
push 提交修改到远程服务器
①克隆服务端git仓库到客户端本地
[root@client ~]# mkdir git
[root@client ~]# cd git/
[root@client git]# git clone git@192.168.88.31:/home/git/project.git
正克隆到 'project'...
warning: 您似乎克隆了一个空版本库。
[root@client git]# ll
总用量 0
drwxr-xr-x. 3 root root 18 3月 16 18:53 project
②修改git配置
$ git config --global --list # 查看全局配置
$ git config --global user.name hoby # 修改提交名
$ git config --global alias.br branch # 修改简写
$ git config --unset alias.co # 删除配置项
$ git config --global core.ignorecase false # 关闭忽略大小写
③对数据进行修改
[root@client project]# echo "TEST.33" > 1.html
[root@client project]# git add . //添加修改文件到暂存区
[root@client project]# ll
总用量 4
-rw-r--r--. 1 root root 8 3月 16 19:39 1.html
[root@client project]# git commit -m "TEST.33"
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address (got 'root@client.(none)')
//出现此错误时,使用git命令添加user.name和user.email
[root@client project]# git config --global user.name "users"
[root@client project]# git config --global user.email "577529195@qq.com"
[root@client project]# git commit -m "TEST.33" //将暂存区里的改动给提交到本地的版本库
[master(根提交) 9e4aa26] TEST.33
1 file changed, 1 insertion(+)
create mode 100644 1.html
[root@client project]# git remote add origin git@192.168.88.31:/home/git/project.git
fatal: 远程 origin 已经存在。
//确认本地和远程的状态是否正常
[root@client project]# git push origin master //本地推送到远程服务器
Counting objects: 3, done.
Writing objects: 100% (3/3), 212 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@192.168.88.31:/home/git/project.git
* [new branch] master -> master
④查看仓库数据状态
[root@client project]# git status //未修改前
# 位于分支 master
无文件要提交,干净的工作区
[root@client project]# vi 1.html
TEST.33
HI word
[root@client project]# git status //修改1.html后
# 位于分支 master
# 尚未暂存以备提交的变更:
# (使用 "git add <file>..." 更新要提交的内容)
# (使用 "git checkout -- <file>..." 丢弃工作区的改动)
#
# 修改: 1.html
#
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")