Git
在个人远程服务器上搭建git服务器
最近想做程序的版本控制,但该程序包还未实现开源,所以放在github上有点不合适。当然我们可以选择github提供的私有版本库,但7美元每月的价格还是显得有点贵。
近来,笔者在腾讯云上买了一个私有服务器,故想在其上安装一个git的服务器版本,以实现程序包的版本控制。故有此文,记录之,以备后续可能之用。本文主要参考了廖学峰的博客。
购买私有服务器
这是整个过程的前提,你需要先在阿里云、腾讯云等提供私有服务器的地方购买私有服务器,获取连接ip、用户名与密码。
如何让多人使用
获取了用户和登录密码后,还可以建立用户和登录密码,然后开放给其它朋友使用,这个参见一般的Linux
的常用命令即可。
搭建远程git服务器
以下的步骤是通用的,大家按照这个来执行就可以了。
- 在远程服务器上安装git
通常来说,购买的云服务器会预装Ubuntu等常用的Linux发行版,在终端输入
git
,以此来查看是否已经安装好了git
。如果该命令不存在,则使用apt
安装即可。sudo apt-get install git
- 创建用户,用来使用git服务
sudo adduser git # 创建一个
git
用户 - 创建证书登录
收集所有需要登录的用户的公钥,即用户本地电脑上的
id_rsa.pub
文件,然后把公钥导入到/home/git/.ssh/authorized_keys
文件里,一行一个。 - 初始化
git
仓库 先选用一个目录作为git
管理仓库,然后建立一个裸仓库。mkdir srv # 开放给其它人使用的话,建立不同的以人名命名的文件夹 cd srv sudo git init –bare sample.git # sample.git的名字改成项目的文件夹名,当然也可以不同,因为推送的时候有关联的一步 则
git
会建立一个裸仓库,裸仓库没有工作区,因为服务器上的git
仓库是为了共享。因此其不允许用户直接登录到服务器上去改动工作区,并且服务器上的git
仓库通常就是以.git
结尾的。然后我们更改该文件的权限(拥有者)。 sudo chown -R git:git sample.git - 禁用shell登录(为了其它人使用方便,可以不执行)
处于安全考虑,第二步创建的
git
用户不允许登录shell,这可以通过编辑/etc/passwd
文件完成。找到类似下面的一行:git:x:1001:1001:,,,:/home/git:/bin/bash 将其改为 git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell 这样,
git
用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell
每次一登录就自动退出。 - 克隆远程仓库
现在就可以开始使用命令
git clone
克隆远程仓库了,在各自的电脑上运行git clone git@server: /srv/sample.git
- 开始推送
- 首先关联本地文件夹项目
在本地的一个
git
管理的文件夹下,执行关联命令git remote add origin git@server:/srv/sample.git 注意远程库的名字为
origin
,这是git
的默认叫法。当然你也可以叫其它的名字 - 第一次推送
git push -u origin master 注意,此时就把当前本地的分支
master
推送到远程的master
分支了。当然你也可以推送其它分支。
- 首先关联本地文件夹项目
在本地的一个
由于远程库还是空的,所以我们第一次推送时,加上了-u
参数,其作用是不仅推送本地的master
分支到远程的master
分支,还会把本地和远程的master
分支关联起来,在以后做了修改后,推送和拉取时就可以简化命令了。
git push origin master
个人多终端模拟多用户
需要首先确定你准备用来工作的终端,然后收集各终端的用户名和rsa秘钥,就可以实现多终端维护一个代码。
在远程服务器上拉取
git clone git@server: /srv/sample.git
sha1:1090e0dbe854:aca6929f80759e01e07f8e603eddd11324e1b7fc