参考文章在CentOS上安装Git实现多人同步开发Centos中GIT服务器搭建及关键连接简介一、在服务器上安装Git依赖和Git2、创建Git用户及其隶属组3、初始化服务器上??的Git仓库4、安装Git客户端并生成公钥5、创建证书登录6、使用GitBash克隆服务器上的空仓库7、将本地库项目推送到服务器1、在服务器上安装Git和依赖1.1安装Git依赖yuminstallcurl-develexpat-develgettext-developenssl-develzlib-develperl-devel1.2。安装Gityuminstall-ygit2,创建“用户组”和“用户”运行git服务2.1创建用户组groupaddgit2.2在git用户组下添加用户adduserphper-ggit2.3设置用户名为name的密码phperpasswdphper更改用户git的密码。新密码:重新输入新密码:passwd:所有身份验证令牌已成功更新。3。创建一个git仓库mkdirgitrootchmownphper:gitgitrootcd/gitrootgitinit--bareproject.gitchmown-Rphper:gitproject.gitchmod774-Rproject.gitcd../chmod750gitroot4.安装Git客户端并生成公钥4.1下载git客户端并安装。右键选择GitGUIHere->Help->ShowSSHKey,得到私钥和公钥。打开Puttygenload之前生成的私钥,得到格式化后的私钥,点击保存私钥配置小乌龟4.2创建证书登录切换到phper目录cd/home/phpermkdir.sshchmod700.sshtouch.ssh/authorized_keyschmod600.ssh/authorized_keys然后上传客户端的公钥到.ssh目录下cd.sshrz将公钥添加到authorized_keyscatid_rsa.pub>>authorized_keys5,clone到本地右键选择gitclone拉下服务器的空仓库现在我们可以代码正常提交到服务器的git,但是不能自动同步。我们还需要修改服务器的hooks/post-receive文件。具体接收后内容#!/bin/shunsetGIT_DIRDeployPath="/alidata/www/project"LogPath="/alidata/gitroot/project.git/hooks"echo-e"\n=================`date+"%Y-%m-%d%H:%M:%S"`==================\n">>$LogPath/gitsync.log2>&1cd$DeployPath#gitstash#先拉取再合并gitpulloriginmaster>>$LogPath/gitsync.log2>&1#强制与远程服务器同步,不要与本地合并,只有提交提交的客户端才能修改代码。#gitfetch--all#gitreset--hardorigin/master#time=`date`#echo"web服务器拉取时间:$time。"回声“=================================================">>$LogPath/gitsync.log2>&1更改post-receive所有者和权限chmod-R774post-receivechownphper:gitpost-receivefinallyunderwwwmkdirprojectchown-Rphper:gitprojectchmod-R774projectcd/alidata/wwwgitclone/gitroot/project.gitOKgit如果同步不上,打开hooks/gitsync.log查看错误日志。可能的可预见错误1.致命的:/usr/libexec/git-core/git-pull不能在没有工作树的情况下使用。synchronized项目文件夹还没有建立--------------解决办法:在www下创建一个project项目文件夹2.fatal:Notagitrepository(oranyofparentdirectories):.git工程文件中没有git初始化------------------解决方法:在www路径下执行gitclone/alidata/gitroot/project.git3,报错:无法打开.git/FETCH_HEAD:Permissiondeniedgitdoesnothavewritepermissionintheprojectdirectory--------------解决办法:修改属主和权限chown-Rphper:gitproject/chmod-R774project4,每次拉push的时候,还是要输入密码,秘钥不起作用------------------------------解决方案:/var/log/secure查看日志,是否是.sshchmod700.sshchmod600.ssh/authorized_keys的权限问题
