准备工作

在Linux服务端安装git工具,以CentOS为例:
yum install git

在服务器创建git用户:

# 添加用户名git
adduser git
# 设置git用户的密码
passwd git

安全设置,git用户不允许使用shell:

vi /etc/passwd
# 找到git用户对应的行,例如:
git:x:1007:1008::/home/pcdev:/bin/bash
# 将后面的/bin/bash 修改成 /usr/bin/git-shell,如下
git:x:1007:1008::/home/pcdev:/usr/bin/git-shell

创建项目目录:

cd /
mkdir git
cd git
mkdir demo.git

创建远程仓库

初始化demo.git仓库:
git init --bare demo.git

设置仓库的用户访问权限:
chown -R git:git demo.git

本地操作

在本地初始化git项目:

mkdir demo.git
cd demo.git
# 初始化
git init

关联服务端项目:
git remote add origin git@[server_ip]:/git/demo.git
关联远程分支
git push --set-upstream origin master
查看远程仓库是否添加成功:
git remote -v

测试远程仓库:

# 创建测试文件
vi demo.cpp
wq!
# 添加所有文件
git add .
# 提交版本到本地库
git commit -m 'demo init'
# push到远程服务器
git push

使用clone测试是否push成功

# 新建空项目
mkdir new_demo.git
cd new_demo.git
git clone git@[server_ip]:/git/demo.git .
# 发现当前目录存在main.cpp那说明clone成功了

异常及处理

remote: fatal: Unable to create temporary file '/git/demo.git/./objects/pack/tmp_pack_XXXXXX': Permission denied
error: remote unpack failed: index-pack abnormal exit
error: failed to push some refs to 'git@192.168.1.100:/git/demo.git'

解决方式:
由于使用git的用户登录操作,该用户无权限操作当前目录,使用chown -R git:git demo.git重新对服务端的demo.git目录授权即可