Git服务器搭建
- 服务器端
* 安装ssh和git
* 创建并配置git账户
* 修改服务器代码存储目录的owner为git
* 创建裸仓库, 裸仓库目录名以.git结尾 - 本地
* 安装ssh和git
* 创建ssh key,并上传到服务器
* 测试
* 关联本次仓库和远程仓库
总的来说,搭建本地Git服务器有两种方法,一是为每个使用Git服务的用户创建一个账户,二是创建一个公用的账户(账户名一般为git)供所有人使用。一般采用第二种方法,可以避免不必要的账户添加和读写权限设置。
服务器端
安装ssh和git
sudo apt install openssh git
创建并配置git账户
sudo adduser git
sudo chsh -s /usr/bin/git-shell git
第二条命令将git用户的shell改为git-shell,以限制git用户的登录行为。借助一个名为git-shell
的受限 shell 工具,你可以方便地将用户git的活动限制在与Git相关的范围内。
修改服务器代码存储目录的owner为git
假设代码存储目录为/opt/git
,修改owner为git以便拥有读写权限:
sudo chown -R git:git /opt/git
创建裸仓库, 裸仓库目录名以.git结尾
可以在/opt/git
下直接创建一个空仓库
cd /opt/git
mkdir project.git
git init --bare
也可以从本地仓库创建一个空仓库
git clone --bare project project.git
scp -r project.git git@server:/opt/git
本地
安装ssh和git
sudo apt install openssh git
安装完成后,首先要配置用户名及其email。
创建ssh key,并上传到服务器
ssh-keygen -t rsa -C "email@email.com"
ssh-copy-id -i git@server
email是上一步中git用户的email,密钥的密码可以为空。默认情况下,该命令在~/.ssh目录生成id_rsa
和id_rsa.pub
两个文件,分别是当前用户的私钥和公钥。
第二个命令将公钥拷贝到服务器的git用户,保存在文件~/.ssh/authorized_keys
中,当然,也可以手动追加到该文件的末尾,每个公钥另起一行。
测试
git clone git@server:/opt/git/project.git
cd project
echo README >> README
git add README
git commit -m "add README"
git push origin master
关联本地仓库和远程仓库
# in project directory
git remote add origin git@server:/opt/git/project.git
git push -u origin master
首先添加仓库关联,然后向master
分支推送内容,-u
参数在首次推送时使用,将本地分支和远程分支关联起来。