以下操作都是通过 root 用户进行的。
首先要确保服务器上面有 git。如果没有,可以通过 yum install git
进行安装。
安装完之后创建一个 git 的用户和用户组(-G 参数自动创建用户组 git),并且指定使用的 shell。
useradd -s /usr/bin/git-shell -d /home/git -G git git
使用 git-shell
确保这个账号能推拉代码,但是不能通过 ssh 登录,通过 ssh 会报错。
Last failed login: Tue Dec 21 09:47:56 CST 2021 from xx.6.116.12 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Mon Dec 20 17:19:03 2021 from xx.6.116.12
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
Connection to xxxx.com closed.
之后使用 passwd git
给 git 用户更改一下密码。
接下来,创建一个测试用的仓库,仓库本质上是一个 git 用户的目录。
# 创建测试目录
mkdir /home/git/test.git
# 初始化为 git 仓库,请务必增加 --bare 参数
git --bare init /home/git/test.git
# 将 test.git 目录分给 git 用户,否则提交不了代码,权限不足
chown -R git:git /home/git/test.git
现在就可以使用这个仓库了。
具体使用跟 github 上的仓库一样,本地指定远程仓库的位置即可。
git remote add origin git@xxx.com:/home/git/test.git
优化流程
每次创建仓库都需要特地登录到服务器然后执行几句命令,用起来不舒服。
因此增加两个脚本来帮助创建远程仓库。
两个脚本一个是在服务器上的,用于创建远程仓库,一个是本地使用的,执行前一个脚本。
仓库名称可以通过脚本参数传入,增加灵活性
服务器脚本:create_repo.sh(脚本是属于 root 用户的,放在 /homt/git/ 目录下)
#!/bin/bash
# 创建仓库目录
mkdir /home/git/$1.git
# 初始化为 git 仓库,请务必增加 --bare 参数
git --bare init /home/git/$1.git
# 将目录分给 git 用户,否则提交不了代码,权限不足
chown -R git:git /home/git/$1.git
本地脚本:create_remote_repo.sh
#!/bin/bash
# xxx.com 改为自己的服务器域名或者 id 即可
ssh root@xxx.com "sh /home/git/create_repo.sh $1"
接下来要创建远程仓库的时候,只需要在本地执行命令即可。
sh create_remote_repo.sh test
以上就是搭建私人仓库的过程,并不复杂。
原文:https://blog.csdn.net/wzg_inspur/article/details/82255493
git init 和 git --bare init 的区别在于
git init 带工作区
git --bare init 是不带工作区的,只有版本库,想要看git里面的内容只能通过git clone address的方式克隆出来
评论区