服务器系统:Centos 6 (查看centos版本命令:lsb_release -a
)
客户端系统:Windows 7
一、服务器端安装Git
==通常centos上使用yum源安装的git版本过低==
1. 检查系统上是否已经安装git,若已有则卸载
2. 安装依赖包,下载最新版本git源码
3. 安装git,配置环境变量
4. 查看git版本号,正确显示则安装成功
5. 若编译时报错如下
可以按照如下方式解决
6. 配置git 用户名及邮箱(客户机安装后也要配置,在这里略过windows的git安装过程)
二、服务器设置
1、添加一个git用户
2、初始化一个项目目录为一个仓库
至此,我们的仓库完整地址为/home/git/yourName.git
【问题】:建立远程仓库使用 git init 命令,也可以增加 –bare 参数。写不写 –bare 参数有什么区别呢?
【答案】:
我们知道,一般从远程 clone 下来的仓库会生成一个独立的目录,在这个目录下有当前分支最新版本的文件,同时还有一个 .git 文件夹,与 .git 同级的文件夹称为我们的“工作目录”,我们的修改都在这个目录中进行。而 .git 就是我们 Git 本地仓库的工作目录,我们 add 和 commit 的东西都会被提交到这个目录中。对 git init 命令添加 –bare 参数就表示初始化 Git 仓库的时候不要创建本地工作目录,所以相当于 .git 文件夹下的所有内容直接创建到当前目录下,而不是被放到 .git 目录下。在 Git 服务器上建立好仓库以后,用户就可以克隆这个仓库了。等等。。还没配置用户 SSH 公钥呢,这么就让用户去下载,肯定还是要输入密码才行的。
3、在 Git 服务器上为用户配置 SSH 公钥
还是先在 Git 服务器上使用 authorized_keys 文件来管理所有用户的 SSH 公钥。(密钥登录的方式比密码登录更安全、更便捷,注意保管好自己的私钥,下面会讲到如何生成秘钥对)
注意:这里的authorized_keys跟配置好的centos的证书方式ssh登录不同(如已配置),我们git的证书文件路径为/home/git/.ssh/authorized_keys(ssh终端登录所用证书文件路径为/etc/ssh/authorized_keys,一般使用xshell或者putty等工具用的证书登录ssh所用的pub密钥信息都在里面)
4、打开服务器的RSA认证
重启sshd
5、为安全起见禁用git用户shell登录
重启sshd服务
三、客户端开始使用
1、打开git bash
2、生成秘钥对
2.1 客户机执行以下命令将在windows的“用户目录/.ssh”下得到秘钥对
2.2上传公共秘钥到git服务器有以下2种方式:
①复制到git服务器的/home/git/.ssh/authorized_keys文件末尾中;
②通过ftp等方式上传后,执行以下命令:
2、任意新建一个工作区文件夹
3、执行clone命令(输入自己的IP地址,端口默认为22,如有不同就加上去)
4、随便新建个文件
5、提交
6、服务器端验证是否上传成功
成功信息:
【遇到的坑】
1、回到家git clone一下发觉这玩意儿 Permission denied我了!
解决办法:再次百度鼓捣一趟,原来是的ssh-keygen的时候自定义了密钥的文件名,保持默认回车下去生成的id_rsa能够正常使用,ssh -v 服务器IP 一下发现可能客户端的git默认使用了id_rsa的私钥,待深入学习git考究(原谅我懒人不看git官网原著,专门看百度出来的博客被坑)
2、git push报错1
缓存区不够大,搞大它
3、git push报错2
权限的问题,因为不是服务器git用户创建的目录
到服务器git目录下
完美!
参考文章: