ubuntu搭建git服务器
发布于 7 年前 作者 Jane-Mardan 6013 次浏览 来自 分享

1.客户端和服务器端安装git (sudo apt-get install) 2.在服务器端可以直接再root下面建立自己的git仓库也可以建一个用户git 在里面建git仓库

步骤为:

  1. 创建git init -bare (仓库名) //使用–bare参数因为我想把项目放在库外面,如果项目放在仓库里面可以不适用
  2. 在客户端进行跟服务器仓库关联 git remote add origin (用户名如root)@(服务器ip):(仓库路径) git remote add必须在仓库目录下执行
  3. 现在你可以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 我电脑一直

  • Reading package lists… Done
  • Building dependency tree
  • Reading state information… Done
  • E: Unable to locate package gitlab-ce 解决不了

猪哥说的是正解,你这个只能是小打小闹,简单玩玩还凑合

2017年的夏天了,为什么不直接装个gogs From Noder

docker run --name gitlab9 -d \
-p 10022:22 -p 10080:80 \
-e 'GITLAB_HOST=github.admin.com' \
-e 'GITLAB_SSH_HOST=github.admin.com' \
-e 'GITLAB_PORT=10080' \
-e 'GITLAB_SSH_PORT=10022' \
-e 'GITLAB_TIMEZONE=Asia/Shanghai' \
-e 'GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string' \
-e 'GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alpha-numeric-string' \
-e 'GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-string' \
-e 'DB_ADAPTER=mysql2' \
-e 'DB_HOST=192.168.0.2' \
-e 'DB_NAME=gitlab' \
-e 'DB_USER=root' \
-e 'DB_PASS=123456' \
-e 'IMAP_HOST=imap.admin.com' \
-e 'IMAP_PORT=993' \
-e 'IMAP_USER=postmaster@admin.com' \
-e 'IMAP_PASS=123456' \
-e 'SMTP_DOMAIN=admin.com' \
-e 'SMTP_HOST=smtp.admin.com' \
-e 'SMTP_PORT=25' \
-e 'SMTP_USER=postmaster@admin.com' \
-e 'SMTP_PASS=123456' \
-v /www/gitlab:/home/git/data \
--link redis:redisio \
sameersbn/gitlab:9.1.2

然后 http://localhost:10080 ,enjoy

@i5ting 恩恩 自己再做个项目 部署到阿里云后在阿里云的机器上一直装不上gitlab 然后就想边学git边建了个git服务器

@guchenhui 恩恩 新手所以不太知道 谢谢了 gogs

@atian25 刚装了一个 很简单啊,花了不到20分钟,全部OK 妥妥的啊!

@atian25 请教一下 gitlab 他的数据库 和 redis 都是怎么一个机制啊。。他都放哪存储的呢。

2017年的夏天了,为什么不直接装个gitea

@ystyle 谢谢 提醒 下次吧这次都布置好了

回到顶部