Ubuntu 上git 服务的搭建记录

本文详细介绍如何在服务器端配置Git与Gitosis进行版本控制管理,包括安装Git、设置SSH密钥、创建仓库及权限配置等步骤。同时指导客户端如何进行相应配置。

一,远程服务器端的配置(server)

1 安装git与openssh

    sudo apt-get install git-core openssh-server openssh-client

 

2 添加git用户,并将该用户作为所有代码仓库和用户的权限管理者:

    sudo useradd -m git

    sudo passwd admin2012


3 建立一个git仓库的存储点,它的拥有者为git,权限为700

   sudo mkdir /home/repo

   sudo chown git:git /home/repo

   sudo chmod 700 /home/repo


4 安装配置gitosis

(1)初始化服务器的git用户

      git config --global user.name "myname"            (myname 替换成你的用户名)

      git config --global user.email "myname@server"   (myname@server 替换成你的邮箱)


(2) 安装gitosis

    1)安装python的setup tool

           sudo apt-get install python-setuptools      

   2)  获得gitosis 软件包(https://github.com/res0nat0r/gitosis.git)

          git clone git:https://github.com/res0nat0r/gitosis.git

          cd gitosis

          sudo python setup.py install

    3)  默认状态下gitosis会将git 仓库放在git用户的home下,所以做一个链接到/home/repo

          su git

          ln -s /home/repo /home/git/repositories


二 客户端机器上的配置(client)

    1 使用ssh-keygen 生成key

        ssh-keygen -t rsa

     2 把客户端的key远程复制到服务器上

        cat ~/.ssh/id_rsa.pub | ssh -i ~/.ssh/your_pemfile.pem ubuntu@your_ip_addr "cat>> /tmp"


三 在服务上再次配置gitosis(server)   

 1 初始化gitosis 

   sudo chmod a+r /tmp/id_dsa.pub

    sudo -H -u git gitosis-init < /tmp/id_dsa.pub

    sudo -s

    cd /home/git/repositories

    cd gitosis-admin.git/

    sudo chmod 755 /data/repo/gitosis-admin.git/hooks/post-update

    exit


四 创建测试项目 teamwork.git (server)

    su git

    cd /data/repo

    mkdir teamwor.git

    git init --bare

    exit


五 在客户端修改更新服务器上的gitosis的配置 (client)

   (1) git 权限管理本身是通过一个git仓库来管理的,把gitosis-admin.git克隆下来

     git clone git@<server>:gitosis-admin.git

    cd gitosis-admin

  (2) 把别的用户的用公钥添加进来 ,临时把pub文件放在~/temp下

     cp ~/temp/id_rsa.pub ./keydir/<user2@pc2>.pub

  (3) 修改权限配置

      vim gitosis.conf

----------------------------------------
[gitosis]
[groupgitosis-admin] 
writable = gitosis-admin
members = ubuntu@serveruser1@pc1 用户一
[group hello]  //分组
writable = teamwork  //操作仓库的权限
members =user1@pc1 user2@pc2 用户 

-------------------------------------------------


(4)更新提交到服务器

   在gitosis-admin目录下

     git add .

     git commit -a -m "add new user"

     git push origin master

     mkdir teamwork-ori

     cd teamwork-ori

     git init

     vim REAME

    git add .

    git commit -a -m "initial version"

     git remote add origin master

    注意:如果gitosis中的用户名和keydir里面的key名字没有完全对应上的话,可能会出现如下错误。

ERROR:gitosis.serve.main:Repositoryread access denied

fatal: The remote end hung up unexpectedly



### 1. 安装 Git 并创建裸仓库 首先确保服务器上已经安装了 Git。如果未安装,可以通过以下命令进行安装: ```bash # Ubuntu/Debian sudo apt-get update sudo apt-get install git # CentOS/RHEL sudo yum install git ``` 安装完成后,创建一个裸仓库,这是 Git 服务器的核心部分。裸仓库不包含工作目录,仅用于存储版本历史记录: ```bash mkdir -p /home/git/myfile cd /home/git/myfile git init --bare keelycenc.git ``` 为确保权限管理清晰,建议将仓库目录的所有权更改为 `git` 用户(或指定的其他用户): ```bash sudo chown -R git:git keelycenc.git ``` ### 2. 配置 SSH 访问权限 Git 服务器通常通过 SSH 协议进行访问。每个开发者需要提供 SSH 公钥,并将其添加到服务器上的 `~/.ssh/authorized_keys` 文件中。可以使用以下命令生成 SSH 密钥对(如果尚未生成): ```bash ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` 将公钥(`~/.ssh/id_rsa.pub`)内容复制到服务器上的 `~git/.ssh/authorized_keys` 文件中。 ### 3. 客户端连接 Git 仓库 在本地机器上,可以通过以下命令将远程仓库添加到本地 Git 项目中: ```bash git remote add origin git@139.XXX.XXX.192:/home/git/myfile/keelycenc.git ``` 确保服务器的 IP 地址和路径与实际配置一致。添加远程仓库后,可以使用 `git push` 命令将本地代码推送到服务器: ```bash git push -u origin master ``` ### 4. 使用 GitBlit 搭建 Windows Git 服务器 如果需要在 Windows 环境下搭建 Git 服务器,可以使用 GitBlit。它是一个基于 Java 的开源工具,支持多种协议(如 SSH、HTTP 和 GIT),并且提供 Web 管理界面。 #### 步骤如下: 1. **安装 Java JDK**:确保系统已安装 Java JDK。可以通过 [Oracle 官网](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html) 下载并安装。 2. **下载 GitBlit**:访问 [GitBlit 官网](https://www.gitblit.com/) 下载最新版本。 3. **配置 GitBlit**: - 解压下载的 GitBlit 包。 - 修改 `data` 目录下的 `gitblit.properties` 文件,配置仓库路径、端口等信息。 - 启动 GitBlit 服务: ```bash java -jar gitblit.jar ``` 4. **访问 Web 管理界面**:打开浏览器,访问 `http://localhost:8080`(默认端口),使用默认用户名和密码登录(通常是 `admin` / `admin`)。 5. **创建仓库和用户**:在 Web 界面中,可以轻松创建仓库、管理用户和团队。 ### 5. 高级配置 #### 5.1 使用 Git Hooks Git Hooks 是一种在 Git 仓库中执行自定义脚本的方法。它们通常用于自动化任务,如代码检查、构建和部署。可以在 `.git/hooks/` 目录下创建脚本文件,例如 `pre-commit` 或 `post-receive`。 #### 5.2 使用 Gitolite 管理权限 Gitolite 是一个基于 SSH 的 Git 仓库管理工具,支持细粒度的权限控制。可以通过以下命令安装 Gitolite: ```bash sudo apt-get install gitolite3 ``` 安装完成后,按照官方文档配置用户和仓库权限。 #### 5.3 使用 GitLab 或 Gitea 如果需要更强大的功能(如 CI/CD、问题跟踪等),可以考虑使用 GitLab 或 Gitea。这些平台提供了完整的 Git 服务解决方案,适合团队协作和企业级使用。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值