本博客是摘自 runoob 教程后的注解。经过亲测,可以加上几个小操作做到更 Easy…
材料
- 一台有公网 IP 的服务器(那么你在世界每个角落都可以访问)
- 或者一台有内网 IP 的服务器(那么你只有在内网或者通过 VPN 可以访问,就看能不能 ping 到)
- linux 系统的 root 权限
成品
- 一台提供Git服务的服务器。
步骤
接下来将以 Centos 为例搭建 Git 服务器。
安装Git
1 | $ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel |
运气好的话,有人装好了你就不用再装了。
接下来我们 创建一个git用户组和用户,用来运行git服务:(如果你没有管理员权限的话,就不要再挣扎了)1
2$ groupadd git
$ useradd git -g git
为了方便后面的操作,你可以给这个 git 账户设置一个密码1
$ passwd git
创建证书登录
查看/home/git/.ssh/authorized_keys文件,如果没有该文件则创建它:
1 | $ cd /home/git/ |
收集所有需要登录的用户的公钥,公钥位于id_rsa.pub文件中,把我们的公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。或者使用
1 | $ cat id_rsa.pub >> ~/.ssh/authorized_keys |
如果觉得一个一个粘贴累,也可以在每个登陆用户的 .ssh/ 目录下直接复制公钥过去1
ssh-copy-id git@xx.xx.xx.xx
等价于把你的公钥传递过去,但是也需要 git 的密码,就是刚才设置的那个。
初始化Git仓库
首先我们选定一个目录作为Git仓库,假定是/home/gitrepo/runoob.git,在/home/gitrepo目录下输入命令:1
2
3
4
5
6
7$ cd /home
$ mkdir gitrepo
$ chown git:git gitrepo/
$ cd gitrepo
$ git init --bare runoob.git
Initialized empty Git repository in /home/gitrepo/runoob.git/
以上命令 Git 创建一个空仓库,服务器上的 Git 仓库通常都以 .git 结尾。
注意:如果不使用--bare
参数,初始化仓库后,提交master分支时报错。这是由于git默认拒绝了push操作,需要.git/config添加如下代码:
1 | [receive] |
推荐使用:git --bare init
初始化仓库。
然后,把仓库所属用户改为 git :
1 | $ chown -R git:git runoob.git |
克隆仓库
1 | $ git clone git@xx.xx.xx.xx:/home/gitrepo/runoob.git |
当然,你也可以不用命令行,我觉得 GitHub Desktop 挺好用的。不仅可以 clone github 上的 .git ,也可以 clone 你设置的服务器上的 .git ,只要在 clone a repository 的时候选择 URL,填对位置,如:git@xx.xx.xx.xx:/home/gitrepo/runoob.git
想再创建仓库
1 | ssh git@xx.xx.xx.xx |
突发奇想,想本地直接 add 到服务器上失败了,用户权限不够1
2
3
4
5
6
7
8
9$ git remote add origin git@xx.xx.xx.xx:/home/gitrepo/gpdm-code.git
$ git push -u origin master
Warning: remote port forwarding failed for listen port 52698
fatal: '/home/repo/gpdm-code.git' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
可以去 Git 官网 学习一波.
TODO
- 设置不同人的 git 账户
- 用户有权限上传 .git
- win10 主机作为 git server