一、Linux服务器端
1、创建git账号
mkdir -p /myweb/user groupadd git useradd git -g git -m -s /usr/bin/git-shell -b /myweb/user
2、安装git
yum install git
3、创建git空版本库
cd /myweb git init --bare git
4、创建或迁移网站目录
git clone /myweb/git /myweb/www cp /原代码目录/* /myweb/www/ cd /myweb/www git add * git commit -m "创建项目" git push origin master
5、设置网站钩子(提交代码到git版本库后,自动拉取到网站目录)
cd /myweb/git/hooks mv post-update.sample post-update sed -i "s/exec/#exec/" post-update echo "unset \$(git rev-parse --local-env-vars)" >> post-update echo "cd /myweb/www" >> post-update echo "git pull" >> post-update
6、修改git库及网站目录权限
chown git:git /myweb/git -R chown git:git /myweb/www -R
7、创建登录密钥(也可以在Windows中用puttygen来创建)
ssh-keygen -C mygitserver -f mykey
出现提示后,如果需要密码,输入密码,如是不需要密码,回车即可,再次确认后,密钥对创建成功。其中当前目录下的mykey(你的私钥)文件请一定要妥善保管,千万不能留在服务器上,下载保存后从服务器中删除。公钥添加到服务器中。
mkdir /myweb/user/git/.ssh mv mykey.pub /myweb/user/git/.ssh/authorized_keys chown git:git /myweb/user/git/.ssh -R chmod 700 /myweb/user/git/.ssh chmod 600 /myweb/user/git/.ssh/authorized_keys
8、卸载或停用selinux(虽然不建议,但对于新手来说,selinux确实很令人困扰,卸载是最简单的办法)
yum remove selinux*
几个注意事项:
- 以上操作中的git用户名、mykey文件名、myweb目录、/myweb/www网站目录等,均可根据自己习惯用其他名称。
- 网站服务nginx/apache及php的运行用户,设置成git会更加方便,不会有权限问题(安全性要求高的网站不在此考虑)。
- 如在服务器的网站目录/data/www下运行git pull/push命令,一定要在运行完命令之后,再次更改git库及网站目录权属,具体命令见上面步骤6。
二、Git客户端使用方法
1、安装git客户端
- Linux系统:yum/apt/pacman/emerge/zypper安装git即可。
- Windows系统:https://git-scm.com/download/win下载最新版本,安装。
Windows系统下的图形客户端,建议用TortoiseGit,注意中文包需要单独下载。
2、将前面生成的私钥导入到客户端
- Linux系统、Windows系统的Git Bash方式(命令行操作):
mkdir ~/.ssh cp mykey ~/.ssh/id_rsa
- Windows系统中TortoiseGit图形界面(两种密钥使用方法):
方式一:安装时默认选择的是putty方式的密钥,需要用安装TortoiseGit时带的puttygen工具,将mykey文件导入,再点击“Save private key”导出为ppk文件。使用TortoiseGit时,导入此密钥文件即可。
方式二:安装时手动选择OpenSSH方式的密钥,按上面Git Bash的方式导入mykey密钥即可在TortoiseGit中自动调用上述密钥。
3、从服务器克隆项目
- Linux系统、Windows系统的Git Bash方式(命令行操作):
git clone ssh://git@服务器IP:端口号/myweb/git /本地路径
- Windows系统中TortoiseGit图形界面:
在文件夹中右键:克隆,地址同上。
小常识:密钥
密钥登录是Linux服务器管理中常用的一种登录方式。密钥为一对,分公钥和私钥,公钥放在服务器上,私钥妥善保存在自己电脑中。类似于生活中的锁和钥匙,用自己的锁锁住的门,只有自己手里的钥匙才能打开。不用担心,计算机生成的密钥对不会有相同的情况,这种机率只存在于理论中。