ubuntu搭建git服务器
发布于 8 年前 作者 Jane-Mardan 6854 次预览 最后一次回复是 8 年前 来自 分享
1.客户端和服务器端安装git (sudo apt-get install) 2.在服务器端可以直接再root下面建立自己的git仓库也可以建一个用户git 在里面建git仓库
步骤为:
- 创建git init -bare (仓库名) //使用–bare参数因为我想把项目放在库外面,如果项目放在仓库里面可以不适用
- 在客户端进行跟服务器仓库关联 git remote add origin (用户名如root)@(服务器ip):(仓库路径) git remote add必须在仓库目录下执行
- 现在你可以clone,但你需要在客户端每次需要输入密码,所以你可以把客户端公钥(在~/.ssh/id_rsa.pub里面用vi打开)复制到服务器端authorized_keys(在~/.ssh里面用),如果不存在用vi 新建authorized_keys复制进去就行,这样就不需要每次都输密码
- 现在已经可以在本地向服务器仓库上传文件了(详情看 廖雪峰老师的git教程),git push origin master这时候可能出现如下错误,这是因为你用户权限不对(我是给仓库给了root权限本应该给git权限我也不太懂) remote: error: insufficient permission for adding an object to repository database ./objects remote: fatal: failed to write object error: unpack failed: unpack-objects abnormal exit To git×××××:/home/git/project ! [remote rejected] master -> master (unpacker error)
3.自动同步
现在建成的只是库,你可以在别的机器克隆到该项目,但你不能在仓库看到,所以需要写个脚本来实现git的钩子(hooks)来实现自动把其他机器上传的文件更新的工作目录,也可以使用直接把仓库clone到工作目录但需要手动git pull origin master,钩子(hooks)是一些在$GIT-DIR/hooks目录的脚本, 在被特定的事件(certain points)触发后被调用。所以下面我们需要新建一个post-receive(post-receive:这个hook由远程资源库的’git-receive-pack’触发,此时,本地资源库的’git push’已经完成,且所有ref已经更新.) sudo vim post-receive 并写入 #!/bin/sh
GIT_WORK_TREE=/XXXX/XXXX git checkout -f //其中/XXXX/XXXX为你的工作目录 再设置文件权限sudo chmod +x post-receive这样就能实时更新了 git错误集合
12 回复
2017 年的今天了,为什么不直接装个 GitLab
@atian25 我电脑一直
猪哥说的是正解,你这个只能是小打小闹,简单玩玩还凑合
2017年的夏天了,为什么不直接装个gogs From Noder
然后 http://localhost:10080 ,enjoy
@i5ting 恩恩 自己再做个项目 部署到阿里云后在阿里云的机器上一直装不上gitlab 然后就想边学git边建了个git服务器
@guchenhui 恩恩 新手所以不太知道 谢谢了 gogs
@atian25 刚装了一个 很简单啊,花了不到20分钟,全部OK 妥妥的啊!
@atian25 请教一下 gitlab 他的数据库 和 redis 都是怎么一个机制啊。。他都放哪存储的呢。
https://github.com/gitlabhq/gitlabhq https://about.gitlab.com/getting-help/#technical-support
开源的,自己研究咯
2017年的夏天了,为什么不直接装个gitea
@ystyle 谢谢 提醒 下次吧这次都布置好了