Git服务器搭建

总的来说,搭建本地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_rsaid_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参数在首次推送时使用,将本地分支和远程分支关联起来。

posted @ 2018-05-02 16:26  actonton  阅读(406)  评论(0编辑  收藏  举报