1.前言
1.1 Git 介绍
Git是一个开源的分布式版本控制系统,用以有效、高速的处理小到大的项目版本管理。Git使用分布式比集中式的版本控制的不同是开发者可以提交到本地,并通过克隆在本地机器上拷贝一个完整的Git仓库。
1.2 Git的主要功能:
1.从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。
2.在各个单机上根据程序员不同开发目的,创建分支,修改代码。
3.在单机上可以自己创建的分支上提交代码。
4.可以在自己的单机上实现代码的整合和对补充代码的提醒阅读。
5.可以发现代码冲突并解决后提交
6.可以对于代码的更新进行标注,方便主开发着了解项目的进度
2.配置安装
2.1 git安装
Windows端安装地址: Git for Windows
Linux端 安装: yum install git -y
2.2 tortoisegit 安装
Windows 端安装地址: Download – TortoiseGit – Windows Shell Interface to Git
3.开始操作
3.1 客户端clone服务器端仓库
查看git版本
Linux端
# git version
git version 1.8.3.1
Windows端
$ git version
git version 2.33.0.windows.2
建立Git
服务器端
创建git用户,用来管理git。
# id git
id: git:无此用户
# useradd git
# passwd git
创建一个git仓库(我设置的路径为:/home/data/git/gittest.git)
# mkdir -p /home/data/git/gittest.git
# git init --bare /home/data/git/gittest.git
Initialized empty Git repository in /home/data/git/gittest.git/
# cd /home/data/git
# chown -R git:git gittest.git/
客户端clone服务器仓库
进入git bash 命令行客户端,创建项目地址(我设置的是H:/www/githome)
admin@DESKTOP-OOM7Q51 MINGW64 ~/Desktop
$ cd /h/www/githome
admin@DESKTOP-OOM7Q51 MINGW64 /h/www/githome
$ git clone [email protected]:/home/data/git/gittest.git
当第一次连接到目标 Git 服务器时会得到一个提示:
The authenticity of host '192.168.56.101 (192.168.56.101)' can't be established.RSA key fingerprint is SHA256:Ve6WV/SCA059EqoUOzbFoZdfmMh3B259nigfmvdadqQ.Are you sure you want to continue connecting (yes/no)?
选择 yes:
Warning: Permanently added '192.168.56.101' (RSA) to the list of known hosts.
此时 C:\Users\用户名\.ssh 下会多出一个文件 known_hosts,以后在这台电脑上再次连接目标 Git 服务器时不会再提示上面的语句。
此时文件也已经clone完了
后面提示要输入密码,可以采用SSH公钥验证
$ ssh-keygen -t rsa -C “[email protected]”
这时C:\Users\用户名\.ssh 下会多出两个文件 id_rsa(私钥) 和 id_rsa.pub(公钥)
服务器端打开RSA认证
# cd /etc/ssh
# vi sshd_config
打开以下三个配置的注释
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
# systemctl restart sshd
在/home/git下创建 .ssh
# mkdir .ssh
# chown -R git:git .ssh
将客户端公钥导入服务器端 /home/git/.ssh/authorized_keys 文件
$ ssh [email protected] 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
现在SSH 公钥就设置完了
也可以使用 tortoiseGit 客户端来管理项目