引言
使用Git可以更好的和朋友一起管理代码,也便于同步代码。由于我比较喜欢静态网站,因此使用Git同步网页文件很是实用
安装Git
登录ROOT账户,依次输入以下命令
1
2
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
yum install git
创建用户
创建一个Git用户组和用户,用于运行Git服务
1
2
groupadd git
useradd git -g git
公钥获取
此部分为自己电脑的公钥,以Widows为例
在%UserProfile%/.ssh/
目录下id_rsa.pub
文件存储
如若没有此文件,打开cmd
运行ssh-keygen
命令会自动生成
导入公钥
将待导入的公钥导入/home/git/.ssh/authorized_keys
文件里,一行一个。
若没有该文件,则创建一个
1
2
3
4
5
cd /home/git/
mkdir .ssh
chmod 755 .ssh
touch .ssh/authorized_keys
chmod 644 .ssh/authorized_keys
然后使用vi或vim命令将公钥导入,使用参考:vim文本编辑
初始化Git仓库
选定一个目录作为Git仓库,假设为/home/gitrepo/repo.git
1
2
3
4
5
cd /home
mkdir gitrepo
chown git:git gitrepo
cd gitrepo
git init --bare repo.git
以上命令Git创建一个空仓库,服务器上的Git仓库通常都以.git结尾。然后,把仓库所属用户改为git:
1
chown -R git:git runoob.git
克隆仓库
1
2
3
git clone git@您的IP:仓库目录
// 例如
git clone [email protected]:/home/gitrepo/repo.git
同步目录
自动同步功能用到的是Git的钩子(hook)功能
进入仓库目录/home/gitrepo/repo.git
1
2
cd /home/gitrepo/repo.git
cd hooks
创建并编辑文件post-receive
1
vi post-receive
在该文件写入以下内容
1
2
#!/bin/sh
git --work-tree=同步到的目录 --git-dir=仓库位置 checkout -f
例如
1
2
#!/bin/sh
git --work-tree=/home/www/hexo --git-dir=/home/gitrepo/repo.git checkout -f
然后设置该文件读写权限
1
chmod +x post-receive
改变repo.git目录的拥有者为git用户
1
chown -R git:git /home/gitrepo/repo.git
更新代码
如果你可以确定什么都没有改过只是更新本地代码,直接使用
1
git pull
正规流程
1
2
3
4
5
6
7
8
9
// 查看本地分支文件信息,确保更新时不产生冲突
git status
// 若文件有修改,可以还原到最初状态; 若文件需要更新到服务器上,应该先merge到服务器,再更新到本地
git checkout – [file name]
// 查看当前分支情况
git branch
// 若分支为本地分支,则需切换到服务器的远程分支
git checkout remote branch
git pull
其他命令
1
2
3
4
git branch // 看看分支
git checkout aaa // 切换分支aaa
git branck aaa // 创建aaa分支
git chechout -b aaa // 本地创建 aaa分支,同时切换到aaa分支。只有提交的时候才会在服务端上创建一个分支
禁用git用户的shell登录权限
出于安全考虑,我们要让 git 用户不能通过 shell 登录。可以编辑/etc/passwd
来实现
1
vi /etc/passwd
将
1
git:x:1004:1004::/home/git:/bin/bash
改为
1
git:x:1004:1004::/home/git:/usr/bin/git-shell
这样 git 用户可以通过 ssh 正常使用 git,但是无法登录 sehll
参考文章
Linux权限详解(chmod、600、644、700、711、755、777、4755、6755、7755)_林20的博客-CSDN博客