引言
使用 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
|
公钥获取
此部分为自己电脑的公钥,以 Windows 为例
在 %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
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
|
然后设置该文件读写权限
改变 repo.git 目录的拥有者为 git 用户
1
| chown -R git:git /home/gitrepo/repo.git
|
更新代码
如果你可以确定什么都没有改过只是更新本地代码,直接使用
正规流程
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
| git:x:1004:1004::/home/git:/bin/bash
|
改为
1
| git:x:1004:1004::/home/git:/usr/bin/git-shell
|
这样 git 用户可以通过 ssh 正常使用 git,但是无法登录 sehll
参考文章
Linux chown 命令-菜鸟教程
Git 服务器搭建-菜鸟教程
Git - 生成 SSH 公钥
SSH key的介绍与在Git中的使用 - 简书
Git - 在服务器上搭建 Git
git 更新代码到本地_ftToday的博客-CSDN博客
如何在服务器上搭建hexo博客-阿里云开发者社区
Linux权限详解(chmod、600、644、700、711、755、777、4755、6755、7755)_林20的博客-CSDN博客
详细解析Linux /etc/passwd文件 - Jtianlin - 博客园