mac本地搭建自己的git服务器
转自:https://www.jianshu.com/p/df6c3f14f7f7
1.新建git用户
注意要选择管理员角色。
在系统偏好设置->共享 中,选择远程登录,勾选git用户允许访问。
2.Git server设置
本地开一个终端,默认用户登陆,
ssh git@yourComputerName.local
提示输入密码则成功,本地在~/.ssh下生成公私钥, 将本地的公钥拷贝到git对应的~/.ssh下,先在git用户下创建.ssh目录,然后本地上传到git:
scp ~/.ssh/id_rsa.pub git@yourComputerName.local:.ssh/authorized_keys
上述链接中说,git用户下/etc有sshd_config或者sshd_config~previous,但我都没有,所以不做这一步了。
3.创建裸仓储
mkdir myproj && cd myproj git init --bare myproj.git
--bare 参数表明只是用来存储 pushes,不会当做本地 repository 来使用。创建一个裸仓储。
https://moelove.info/2016/12/04/Git-本地仓库和裸仓库/
不加 --bare参数的git init 命令是创建一个本地仓储,会包含工作区,而裸仓储不包含工作区:
- 从裸仓库 clone 下来的本地仓库可以进行正常的
push
操作, 但是从一般仓库 clone 下来的本地仓库却不行。 这也正是裸仓库存在的意义。 裸仓库一般情况下是作为远端的中心仓库而存在的。 - 裸仓库不包含工作区,所以并不会存在在裸仓库上直接提交变更的情况。而是通过clone后push操作。
在本地克隆:
git clone git@yourComputername.local:/Users/git/myproj/myproj.git ./
clone会有warning,这是一个空的仓储,可以忽略。
裸仓储目录内容如下:
myproj.git % ls HEAD description info refs config hooks objects
https://segmentfault.com/q/1010000002549403
裸(bare)仓库里只存储历史和元信息(详细格式),不会维护工作目录。