Linux作服务器,windows作为客户端,都需要安装git
- 1、Linux安装git(我这里用的Ubuntu的系统) Centos 用yum安装
apt-get -y install git
- 安装完毕检查
git --version
服务器创建git用户,来管理git服务器
useradd git
passwd git
- Windows安装git自行百度安装
Git bash 可以运行Linux命令 ls mkdir touch vim 等等 也可以运行shell脚本(.sh) 模拟的Linux环境
- 安装完毕检查
- 2、服务器创建Git仓库
- 设置/home/zhou/git/cd.git 为Git仓库
- 把Git仓库所属权修改给刚刚创建的git用户
- 创建仓库文件
mkdir -p /home/zhou/git/cd.git
- 初始化仓库
git init --bare /home/zhou/git/cd.git
- 修改仓库
cd.git
所属权
cd /home/zhou/git
chown -R git:git cd.git/
-3、Windows克隆git仓库 - 随便在一个文件夹下面运行 Git Bash Here(Windows版本Git)
- 自己电脑公钥和私钥已经配置好了,用另一台电脑先用密码拉取和提交代码演示
这里需要输入密码,刚刚创建的管理Git仓库的git用户,上库的时候也需要密码,这样操作比较麻烦
- 4、Windows客户端创建SSH公钥和私钥
ssh-keygen -t -ras -C "邮箱@163.com"
公钥和私钥创建完成- id_rsa 私钥
- id_rsa.pub 公钥 复制到服务器
- 5、Linux服务器配置RSA
- Linux服务器配置rsa文件在 ‘/etc/ssh/sshd_config’
- vim 编辑配置文件 放开这三行的注释
RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
- 保存并重启 不同Linux系统shh重启不一样,不同的自行百度
/etc/init.d/ssh restart
- 在/home/git 目录下创建 .ssh
- 修改.ssh文件夹的所属权
chown -R git:git .ssh
- 6、将Windows客户端的公钥导入
/home/git/.ssh/authorized_keys
- 方法一
- 先将id_rsa.pub 文件上传至Linux服务器
cat id_rsa.pub >> /home/git/.ssh//authorized_keys
- 先将id_rsa.pub 文件上传至Linux服务器
- 方法二 在Git Bash中 重定向进去,这个操作需要密码
ssh git@Linux机器IP 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
- 操作完毕,去Linux
/home/git/.ssh/authorized_keys
查看是否存在文件
修改 /home/git 下的 .ssh文件夹和authorized_keys文件权限
chmod 700 .ssh
chmod 600 authorized_keys
- 方法一
- 7、Windows客户端再次连接clone远程仓库和push文件上库操作,无需输入密码
提交时可能会报这个错误-
解决办法
-
因为Windows使用回车和换行两个字符来结束一行,而Mac和Linux只使用换行一个字符。虽然这是小问题,但它会极大地扰乱跨平台协作。
-
Git可以在你提交时自动地把行结束符CRLF转换成LF,而在签出代码时把LF转换成CRLF。用core.autocrlf来打开此项功能,如果是在Windows系统上,把它设置成true,这样当签出代码时,LF会被转换成CRLF:
$ git config --global core.autocrlf true
- Linux或Mac系统使用LF作为行结束符,因此你不想 Git 在签出文件时进行自动的转换;当一个以CRLF为行结束符的文件不小心被引入时你肯定想进行修正,把core.autocrlf设置成input来告诉 Git 在提交时把CRLF转换成LF,签出时不转换:
$ git config --global core.autocrlf input
- 这样会在Windows系统上的签出文件中保留CRLF,会在Mac和Linux系统上,包括仓库中保留LF
- 如果你是Windows程序员,且正在开发仅运行在Windows上的项目,可以设置false取消此功能,把回车符记录在库中:
$ git config --global core.autocrlf false
-