如何在Linux服务器上搭建Git

我们可以选择将自己的项目托管在GitHub上,以实现多人开发。如果在内网环境开发或者不想将代码托管到GitHub上,那么可以选择在一台自己的服务器上部署Git以实现代码托管和协同开发。

1、安装Git

首先需要在服务器安装Git,如果是可以访问网络,那么可以通过执行yum install git进行安装;如果不能访问网络,那么可以选择从源代码安装,但这时候需要注意首先要把Git的依赖包安装。可以参考帮助手册

2、初始化一个裸仓库

关于裸仓库的解释,可以参考这篇文章,可以简单将裸仓库理解为(可能并不严谨)一个不包含任何实质内容、并且可以供开发者进行代码提交的仓库

初始化一个裸仓库的命令为:git init --bare your-repo.git,可以看出,由于在初始化时指定了--bare参数,因此该仓库是一个裸仓库。

假如你当前在/home/projects路径下,那么在该目录下就会生成一个名为your-repo.git的仓库,实际上就是一个被Git初始化了的目录。

之所以要在仓库名后面加上.git,实际上是一种约定俗称的写法,回想一下我们从GitHub上克隆仓库时,仓库名称往往也是以.git结尾的。

3、将仓库克隆并开始工作

假设你的服务器的ip地址是123.456.78.9,且你的工作电脑有足够的权限来读写服务器(至少是仓库目录),那么接下来要做的事情就是将刚刚创建的仓库克隆到本地。

命令如下:

git clone root@123.456.7.89:/home/projects/your-repo.git

可能会需要你输入远程服务器的密码,一切顺利之后,你会将整个仓库克隆到你的本地工作电脑上。然后你就可以在本地进行编码编写了,完成工作之后,可以进行提交,也可以通过push命令同步代码到远程仓库。

4、注意

上述过程是一种最简单的搭建Git仓库的方法,没有涉及到对协同工作人员的权限的管理。如果你想要了解更加全面的内容,那么就应该去Git的帮助文档查找有关内容。后续我遇到了新的问题,也会补充在这篇文章的第5部分。

5、补充问题

5.1 关于push权限的问题记录

2020年8月31日

我在测试的过程中,遇到了一个本地提交无法推送到远程仓库的问题,报错提示如下:

Push master to origin/master was rejected by remote

很明显,这是远程服务器拒绝了本地的推送请求,原因只有一个,那就是权限不够。

我解决这个问题的方法是,先获取到本地电脑的ssh公钥,然后将该公钥添加到服务器用户(由于我没有设置别的用户,因此就是添加到root用户下)的authorized_keys文件下。

该文件通常位于~/.ssh目录下。从文件名就可以看出,该文件的作用就是记录那些被授权的主机的公钥信息的。

5.2 关于非root用户创建的裸仓库可以直接被push的问题记录

2020年9月1日

步骤:

  1. 如果我另外创建了一个非root用户,比如说用户名是git
  2. 然后我用git用户初始化了一个裸仓库,目录为/srv/git/project.git
  3. 在我的工作电脑上,输入git clone git@123.456.78.9:/srv/git/project.git后输入该用户的密码后就可以将仓库克隆到本地,也可以成功提交和推送。
  4. 检查git用户的 ~/.ssh/authorized_keys,发现为空。

为什么直接就可以推送成功而没有出现5.1中的问题呢?我回想了一遍整个过程,问题可能出在第1步和第2步中间。

前面已经提到,裸仓库的创建实际上是先创建一个目录,然后在该目录下执行git命令即可;我在创建目录的时候用的git用户,而为了能够让git用户具有完整的权限,我的操作是:用root用户将/srv目录设置为所有用户可读写,即执行了命令chmod a+rw -R /srv。我怀疑是因此而导致我的工作电脑也具有了对该仓库(目录)的读写权限了。

明天再验证吧。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芳樽里的歌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值