git linux服务端和windown客户端安装配置
Git是一款免费、开源的分布式版本控制系统。server端拥有中心版本库,客户端从server端checkout完整版本库,日常使用客户端的版本库工作,当工作完成后将客户端版本库提交到中心版本库。
git和svn的区别:
lGit是分布式的,而SVN不是
Git 和 SVN 一样有自己的集中式版本库或服务器。但,GIT 更倾向于被使
用于分布式模式,也就是每个开发人员从中心版本库/服务器上 chect out 代 码后会在自己的机器上克隆一个自己的版本库。
l Git将内容按元数据方式存储,而SVN是按文件
所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs
等的 文件夹里。如果你把.git 目录的体积大小跟.svn 比较,你会发现它们差距很 大。因为.git
目录是处于你的机器上的一个克隆版的版本库,它拥有中心版 本库上所有的东西,例如标签,分支,版本记录等。
l Git分支和SVN分支的不同
SVN 的分支就是版本库中的另外一个目录,而 Git 的分支却是整个版本库的一个快照,而且可以在同一个工作目录下快速的在几个分支间切换。
l Git没有一个全局的版本号,而SVN有
SVN 的版本号实际是任何一个相应时间的源代码快照。而 Git 并没有这 样的一个全局版本号,这也是 Git 缺少的最大的一个特征
l Git的内容完整性要优于SVN
Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性, 确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
Git 的基本工作流程如下:
1. 在工作目录中修改某些文件。
2. 对修改后的文件进行快照,然后保存到暂存区域。
3. 提交更新,将保存在暂存区域的文件快照永久转储到 Git 目录中。
环境:
server端 :centos7
client端 : windowns7
server端 :
yum安装 : yum -y install git
编译安装:
wget https://www.kernel.org/pub/software/scm/git/
yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
tar -zxvf git-2.3.1.tar.gz
cd git-2.3.1
make prefix=/usr/local all
make prefix=/usr/local install #root用户运行
查看 : git - -version
创建git用户和组 :
useradd git
groupadd git
passwd git
创建中心版本库 :
mkdir /home/data/git/gittest.git/
git init --bare /home/data/git/gittest.git
cd /home/data/git/
chown -R git:git gittest.git/
client端 :
下载 Git for Windows,地址:https://git-for-windows.github.io/ 或直接下载TortoiseGit
安装完之后,可以使用 Git Bash 作为命令行客户端。
指定版本库【D:\git】 :git bash里执行
cd /d/git/
mkdir gittest_gitbash
cd gittest_gitbash
git clone git@192.168.1.57:/home/data//get/gittest.git ---将server仓库完整checkout下来
此时 C:\Users\用户名\.ssh 下会多出一个文件 known_hosts,以后在这台电脑上再次连接目标 Git 服务器时不会再提示上面的语句
证书登录 :
client端生成公私钥:
$ ssh-keygen -t rsa -C "1838370@qq.com" ---在C:\Users\用户名\.ssh目录下 生成:
id_rsa 是私钥 id_rsa.pub 是公钥
server端开启证书认证:
vim sshd_config写入如下内容:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
systemctl restart sshd.service重启ssh
mkdir -p /home/git/.ssh/ ---创建git用户密钥存放路径
chown -R git:git /home/git/.ssh
chmod 700 /home/git/.ssh
client端导入公钥:
ssh git@192.168.1.57 ‘cat >> /home/git/.ssh/authorized_keys‘ < ~/.ssh/id_rsa.pub (authorized_keys权限为600)
从此以后不会有密码验证了