【Git】服务器搭建Git环境

本文参考了菜鸟教程中的git服务器搭建和git远程仓库创建,文章流程简练可读性强,但仍有部分细节不清晰,导致操作失败,这里就这些问题加以补充完整。


菜鸟教程git服务器搭建

按照菜鸟教程配置即可,其中第1、2步要注意的地方如下:
1.添加git用户后$ useradd git -g git必须设置密码$ passwd git,否则连接被拒;
2.创建证书登录的时候,如下:

【Git】服务器搭建Git环境_第1张图片
Paste_Image.png

红色线条标记的收集所有用户的公钥,指的是本地PC�公钥,位于pc_username/.ssh/文件目录下(不同电脑可能不同),注意.ssh为隐藏文件夹。如果.ssh目录下没有rsa文件则需要生成,参考 如何创建公钥

如果最后克隆仓库的时候出现如下提示

Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)

请参考这里开启服务器对应的服务并重启sshd守护进程
$ /etc/init.d/sshd restart


创建远程仓库

到这里我们的git服务器搭建就完成了,git服务器只作为共享资源的仓库,不应该在git服务器中对仓库资源做任何更改。为了管理资源,我们需要�创建一个远程仓库,有以下两种方式,

  • git服务器上创建git库->拉取到本地操作->推送到git服务器端
  • git服务器上创建mytest.git仓库->本地已有仓库:关联本地仓库到git服务器的mytest.git仓库,例:$ git remote add origin [email protected]:/path/mytest.git->推送到远端git仓库$ git push -u origin master(第一次使用该命令,将本地master和远程master分支进行关联)

注意:一个远端git库只能被关联一次

在服务器上推荐使用 git init –bare 方法创建一个所谓的裸仓库,之所以叫裸仓库是因为这个仓库只保存git历史提交的版本信息,而不允许用户在上面进行各种git操作,如果你硬要操作的话,只会得到下面的错误(”This operation must be run in a work tree”),所以慎用git init在服务器上初始化仓库。

使用$ git push -u origin master命令推送到远程分支并合并的时候常见错误:

  • 权限问题

fatal: protocol error: bad line length character: This

是因为按照下图禁止了ssh登录,或者当前用户公钥没有加入/home/git/.ssh/authorized_keys文件


【Git】服务器搭建Git环境_第2张图片
�这一步是坑.png
  • 服务器git仓库所属用户未修改

insufficient permission for adding an object to repository database ./objects

在服务端新创建一个仓库,仓库默认属于root用户,所以需要修改所属用户为git用户,如下:

�修改所属用户.png

更多创建远程库内容请参考链接

你可能感兴趣的:(【Git】服务器搭建Git环境)