CentOS7搭建git服务器

1 篇文章 0 订阅

前言

本文内容简单,难点在于中间遇到的问题。
这个博文假设大家已经有了一定的linux和git基础。

环境准备

阿里的CentOS 7.5.1804(服务器,IP112.74.39.31)
Windows8.1 专业版(客户端)
Git 2.9.5(安装在服务器上)
Vim(CentOS自带即可,使用vi效果也一样)

总体步骤

1、在CentOS上新建一个git仓库
2、在CentOS上新建一个账户,设置好各种权限
3、在Windows上测试git clone、git push、git pull这三个常用命令
4、添加SSH免密操作
5、实例:上传一个项目

详细过程

1、新建一个git仓库

cd /srv
mkdir gitserver
cd gitserver
mkdir test
cd test
git init

⇒ Initialized empty Git repository in /srv/gitserver/test/.git/
表示新建成功

2、新建一个账户

useradd littlegit

什么都没有回显表示成功

3、设置密码

passwd littlegit

4、设置账号的登录权限
如果不考虑安全问题,可以不做这一步

vim /etc/passwd

修改和littlegit有关的权限,
防止利用这个账户登录CentOS进行操作,

将
littlegit:x:1004:1004::/home/littlegit:/bin/bash 
改为
littlegit:x:1004:1004::/home/littlegit:/usr/bin/git-shell
然后 Esc -> :wq 保存退出

其格式为
注册名:口令:用户标识号:组标识号:用户名:用户主目录:命令解释程序
在更改之前请确认/usr/bin下是否存在git-shell,
如果不存在,可以找到git-shell的位置(一般在git安装目录的bin下),
使用软连接搞一个出来,我的是在/usr/local/git/bin下,软连接命令如下

ln -s /usr/local/git/bin/git-shell /usr/bin/git-shell

5、给账户git仓库的权限

chown -R littlegit:littlegit /srv/gitserver/

我这里是把这个文件夹和其下的所有东西的权限都给了littlegit这个用户,当然也可以单独给一个文件或者文件夹的权限,我这里是打算以后的项目都放在这下面,所以这么搞

6、测试git clone

测试的东西事情基本都在Windows下操作,即客户端

git clone littlegit@112.74.39.31:/srv/gitserver/test/.git

输入littlegit的密码之后得到以下结果,很遗憾,你虽然成功了,但是体验不到失败多次那次成功的喜悦感
⇒ warning: You appear to have cloned an empty repository.

如果得到的结果是
⇒ Permission denied, please try again.
那你应该是操作了第四步,没有操作成功,两条路,认真检查第四步or去掉第四步的操作

7、测试git push
在Windows刚拉取下来的git仓库里面增加点东西,git add和git commit一下,然后git push,此时需要输入密码,如果报错如下
在这里插入图片描述
或者报错如下
在这里插入图片描述

不要惊慌,问题不大,无伤大雅,看报错,咳咳咳,没看懂,关于第一个图的报错,我们弱弱地新建一个dev分支进行测试,

git checkout -b dev
git push --set-upstream origin dev

嗯,这次上传成功了,改点东西,使用git push一下,发现也没什么问题

关于第二个图的报错,好像有点看懂了,是权限不够,再操作一下第五步就行了

还有一个报错,不想复现了,大晚上的,刚听完QQ小冰给我讲的一个鬼故事,现在我只想躲在被窝里面瑟瑟发抖;这个报错的大义是git-upload-pack找不到,只需要将git安装目录下的bin下的git-upload-pack软连接到/usr/bin下即可
ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack
在遇到git-receive-pack找不到的时候同理

8、测试git pull
在CentOS上

cd /srv/gitserver/test/
git checkout -b master
git merge dev

在Windows上

git checkout master
git pull

发现很完美,也没有问题,测试完成这个之后,其实搭建git服务器已经结束了

9、SSH免密操作设置过程
没搞明白,看了好多教程都没有弄出来,有人懂的吗,留个言我学习一下

10、实例:从零上传一个项目
本次使用httpd服务的根目录/var/www/html进行演示
在CentOS:

git init /var/www/html/
chown -R littlegit:littlegit /var/www/html

在Windows:

git remote add origin littlegit@112.74.39.31:/var/www/html/.git
git checkout -b dev
git push --set-upstream origin dev

为什么不用master分支提交呢,因为总是报以下截图的错,目前我没找到解决方案,有人有解决方案可以回复告知我一下,我学习学习
在这里插入图片描述
【新增】后来用我蹩脚的英语看了一下报错,
报错提示大概意思是远程仓库正在使用当前分支,
提交被拒绝,
倘若使用git config receive.denyCurrentBranch ignore作为解决方案,
会出现很奇怪的问题,
本地push之后远程git status你会发现有惊吓,
所以解决方案可以是换一个分支进行push,
然后在远程进行合并,
或者是远程切换分支之后再进行push

参考

https://yq.aliyun.com/articles/206382?spm=a2c4e.11155472.0.0.140b3004NkeVkt
https://www.cnblogs.com/songxingzhu/p/6364700.html
https://blog.csdn.net/dxk539687357/article/details/53080850
https://blog.csdn.net/w252064/article/details/82691343

后感

是时候写点看起来有点高大上的博客了,要不然食屎都抢不到热的
其实在linux上是可以搭建github或者gitlab的镜像的,大家有空有兴趣可以去尝试

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值