首先安装Windows客户端的git和TortoiseGit。
安装这两个软件还是蛮重要的,很多选项不能乱选。
为了写个完整的博客,我是装了又卸,卸了又装。
1.安装git
下载:https://git-scm.com/
2.安装TortoiseGit
下载 https://tortoisegit.org/download/ 别忘了中文语言包也一起下载了
当把乌龟安装好后遇到语言选择的界面先别动,直接安装中文包,中文包安装好后再继续配置乌龟点击refresh就可以选择中文继续往下走。
3.安装git
yum install git
4.创建存储目录(涉及路径乃自定义,看心情。)
mkdir /var/gitdata
单给一个777权限 以便将来用git账号在这里创建git仓库
chmod 777 /var/gitdata
5.添加git用户(其实后来我把git用户换到了root组 还挺方便的)
groupadd git
useradd git -g git
passwd git
6.切换到git账号
su git
7.创建项目仓库
cd /var
mkdir gitdata/a.git
8.初始化裸仓库
git init --bare gitdata/a.git
9.创建公钥
ssh-keygen(按这条命令的时候直接按回车 不要输入东西)
然后会在当前用户也就是git用户的家目录里生成一个.ssh目录 里面id_rsa是私钥 id_rsa_pub是公钥
10.切换回root
su root
vi /etc/ssh/sshd_config
打开以下注释:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys (指定存放公钥的路径是git家路径.ssh下的authorized_keys)
11.重启sshd服务
systemctl restart sshd.service
12.客户端创建公钥
在本地项目目录中找个空目录,点击右键打开git bash
ssh-keygen(按这条命令的时候直接按回车,不要输入东西)
此时,C:\user\用户名\.ssh下会多出两个文件id_rsa是私钥,id_rsa_pub是公钥。
13.下面两条语句客户端和服务器端都要执行 输入自己github上的用户名和邮箱
git config --global user.name zhao-baolin
git config --global user.email 937240319@qq.com
14.服务端存放客户端公钥
vi /home/git/.ssh/authorized_keys
将客户端的公钥文件里的东西全部复制进去 当然 当前目录下的那个id_rsa.pub里的内容也可以一股脑儿复制进来。
15.修改权限
.ssh目录的权限必须为700(必须)
chmod 700 /home/git/.ssh
.ssh/authorized_keys文件的权限必须为600(必须)
chmod 600 /home/git/.ssh/authorized_keys
修改家目录所有者
chown -R git:git /home/git
16.github存放服务端公钥
打开https://github.com/ 登陆账号 进入设置
在SSH and GPG keys中添加Linux服务端的公钥,title随便填,内容把公钥文件里的东西全部复制过来就行。
回到Linux 输入以下命令:
ssh -T git@github.com
输入yes回车 提示成功
17.检出项目(用git的话叫做克隆项目)
切换git账号
su git
git clone git@192.168.11.11:/var/gitdata/a.git
以上命令客户端打开bash输入一遍,服务端也输入一遍。
如果服务器更新遇到这个错
fatal: Couldn't find remote ref master
fatal: The remote end hung up unexpectedly
或者客户端更新遇到这个错
Your configuration specifies to merge with the ref 'refs/heads/master'
from the remote, but no such ref was fetched.
请不要慌乱 曾经我在这里持续折腾了七个小时 网上查了个底朝天也没查到解决办法
最后找到原因之后 我才明白为什么网上查不到 因为没人有我这么傻逼
原因是没有找到master分支 为什么没有master分支呢 因为master分支是首次提交后创建的 然而我克隆了就直接pull 简直就是脑残 当时我只是想测试一下跑不跑得通。。。
18.一些简单的命令
原来这里写了一些简单的命令 后来我自己都懒得看 因此贴一篇比较详细的资料在文章末尾 方便查阅
19.钩子
切换root账号
su root
vi /var/gitdata/shici.git/hooks/post-receive
输入以下四行内容:
#!/usr/bin/bash
cd /var/www/a
unset GIT_DIR
git pull origin master
(第一行请自行以whereis bash查找一下你服务器上的bash路径,第二行cd进项目目录)
再给个权限:
chmod 755 /var/gitdata/a.git/hooks/post-receive
chown git:git /var/gitdata/a.git/hooks/post-receive
这样客户端提交代码,服务端项目就可以自动更新了,前提是必须切换到git账号手动拉取一下项目,进行一个yes授权记住密码,否则无法自动更新。客户端也一样,所有的基本操作最好先用bash命令行走一圈。
20.禁止登陆shell
vi /etc/passwd
找到git用户那一行 改为:
git:x:1001:1000::/home/git:/usr/bin/git-shell
(最后的路径是你的服务器上git-shell的实际路径)
将来若要添加新仓库
可修改/etc/passwd文件允许git用户登入shell
然后登录git账号做以下操作
1. 切入仓库目录 cd /var/gitdata
2. 创建仓库 mkdir b.git
3. 初始化仓库 git init --bare b.git
4, 创建钩子 vi /var/gitdata/b.git/hooks/post-receive
5. 输入以下四行内容
#!/usr/bin/bash
cd /var/www/b
unset GIT_DIR
git pull origin master
6, 修改权限 chmod 755 b.git/hooks/post-receive
7. 切进项目目录 cd /var/www
8. 如果用的root账号做的这些事情 那么请一定记住把目录所有者设置为git
chown git:git -R /var/gitdata
chown git:git -R /var/www/b
9. 克隆项目 git clone git@192.168.11.11:/var/gitdata/b.git
git命令清单:
http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html