[BUG]Git Sever搭建与相关错误处理
搭建
安装git:
sudo apt-get install git
创建一个git用户,用来运行git服务:(用自己的用户也可以,其实)
sudo adduser git
创建证书登录:
收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。
(可以在客户端通过ssh-copy-id user@serverip搞定)
第四步,初始化Git仓库:
先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令:
sudo git init --bare sample.git
Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git: $ sudo chown -R git:git sample.git
第五步,克隆远程仓库:
现在,可以通过git clone命令克隆远程仓库了,在各自的电脑上运行:
git clone git@server:/srv/sample.git Cloning into 'sample'... warning: You appear to have cloned an empty repository
剩下的推送就简单了:
(如果客户端已经有一个git项目了)
如一个叫ea_network_pruning的项目,server端也有一个叫ea_network_pruning.git的bare项目。则:
git remote add origin git@ip:~/ea_network_pruning.git
然后:
git push -u origin master
修改remote url:
首先移除remote url:
git remote remove origin
然后更新remote url:
git remote add origin xx@xxxx.git
然后pull:
git pull origin master
再设置push的参数:
git push --set-upstream origin master
最后add,commit后,push当前结果:
git push
报错:git remote error insufficient permission for adding an object to repository
解决:
这是因为远端服务器上,git项目文件夹的own不属于我们连接的那个账号(很可能是root)。登陆远端服务器,修改该项目的的所属人:
sudo chown -R git:git /home/git/project/doc.git
git:git的意思是,所属用户:所属组。