zoukankan      html  css  js  c++  java
  • 搭建 Git 服务器(基于 CentOS 7)

    服务器上的-Git-架设服务器-官网参考

    对于规模比较小的团队,可以直接搭建 Git 服务器,逐个收集研发同学的证书配置进来即可。如果团队规模比较大,可以直接采用 GitLab、Drone 等现成的带有权限管理的 Git 服务。

    服务器端操作

    安装 Git

    对于 CentOS,可以直接使用 yum install 命令安装:

    yum install git -y

    对于 Ubunt,可以使用 apt-get 命令:

    apt-get install git -y

    安装后,可以查看版本:

    $ git --version
    git version 1.8.3.1

    创建 git 用户

    # useradd git -d /home/git -m -s /bin/bash
    # su git

    参数解释:

    -d:指定用户的家目录
    -m:如果目录不存在,则创建这个目录
    -s:指定用户可以使用的命令

    创建项目(注意需要用 git 用户创建)

    报错:failed to write object

    如果用 root 用户创建项目,在执行 push 等操作时,git 用户会碰到权限不足的问题:

    remote: error: insufficient permission for adding an object to repository database ./objects
    remote: fatal: failed to write object
    error: remote unpack failed: unpack-objects abnormal exit

    查看项目的创建者:

    [root@VM_139_74_centos git]# ll
    total 44
    drwxr-xr-x  7 root root 4096 Sep 14 09:27 tp5.git
    drw-------  1 git  git   583 Sep 12 13:19 xx.git

    解决办法:

    • 修改服务器的项目所有者,改为 git 用户
    • 修改权限(不推荐)
    • 重新用 git 用户创建项目(需要在客户端重新关联项目)

    客户端重新关联项目:

    git remte origin set-url URL 

    或者先删后加:

    $ git remote rm origin
    
    $ git remote add origin git@your-ip-or-host:/home/git/tp5-demo.git

    可以在服务器端创建空项目,然后将本地已有项目添加进来。或直接在服务器端创建项目,本地从服务器端 clone 一份。

    建立裸仓库

    可以用 --bare 选项运行 git init 来建立一个裸仓库,初始化不包含工作目录的仓库。

    $ cd /opt/git
    $ mkdir project.git
    $ cd project.git
    $ git --bare init

    Join,Josie 或者 Jessica 就可以把它加为远程仓库,推送一个分支,从而把第一个版本的项目文件上传到仓库里了。

    创建并 push 本地的项目

    Git 远程仓库的使用可以 参考这里

    • git remote add:添加远程仓库
    • git fetch:从远程仓库中抓取与拉取,从远程仓库中获得数据
    • git push origin master:推送 master 分支到远程仓库,命令格式:git push [remote-name] [branch-name]
    • git remote show origin:查看远程仓库

    示例如下:

    $ cd myproject
    $ git init
    $ git add .
    $ git commit -m 'initial commit'
    $ git remote add origin git@your-ip-or-host:/opt/git/project.git
    $ git push origin master

    修改 host 文件(可选)

    每次添加一个新项目都需要通过 shell 登入主机并创建一个裸仓库目录。

    可以修改 host 文件,以 gitserver 作为 git 用户及项目仓库所在的主机名:

    $ git remote add origin git@gitserver:/opt/git/project.git

    客户端操作

    配置客户端邮箱和用户名

    Git 客户端安装完成后,首先要配置邮箱和用户名:

    • 配置邮箱:
    git config --global user.email 'xx@xx.com'
    • 配置用户名
    git config --global user.name 'myname'

    生成 SSH 公私钥对

    Git 安装完成后,自带了用于生产公私钥对的 ssh-keygen 工具。

    生成 SSH 公私钥对

    打开 Git Bash,也就是 Git 的命令行终端,输入以下命令生成公私钥对,注意替换命令中的邮箱:

    ssh-keygen -t rsa -b 4096 -C "xx@xx.com"

    默认存储公私钥对的路径是 C:UsersAdministrator.ssh,终端在保存之前会提示你是否保存在它指定的默认位置,一般直接回车确认即可。最终生成两个文件:

    • id_rsa:私钥文件,打死都不能告诉别人
    • id_rsa.pub:公钥文件,要想跟哪个服务器通信,就在哪个服务器上添加

    确认

    打开 Git GUI,依次点击菜单栏的 “Help->Show SSH Key”。正常情况下,你刚才生成的公钥会显示在这里,公钥末尾是你的邮箱。

    把 ssh 公钥添加到服务器

    默认存储公私钥对的路径是 C:UsersAdministrator.ssh

    在服务器端 git 用户的家目录下的 .ssh 目录中存放 Git 服务器的相关设置,如果没有则创建这个目录: /home/git/.ssh。然后,在 .ssh 目录中创建 authorized_keys 文件,将公钥内容粘贴过来即可。如果希望添加多个用户的多个公钥,直接追加到文件中即可。

    注意:这里需要注意创建的目录和文件的权限,必须保证 git 用户有足够的访问权限。

    $ mkdir ~/.ssh
    $ chmod 700 .ssh
    $ cat your-pubkey.pub >> ~/.ssh/authorized_keys
    $ chmod 600 ~/.ssh/*

    当然,也可以利用 lrzsz 等工具将公钥传到服务器,然后用 cat 等命令将其追加到 authorized_keys 文件:

    su git
    cat your-pubkey.pub >> ~/.ssh/authorized_keys

    使用

    打开安装的 Git 客户端,执行 Git 命令:

    Administrator@PC-20180813FYYN MINGW64 /e/kika/demo
    $ git clone git@111.231.221.219:/home/git/tp5.git
    Cloning into 'tp5'...
    Enter passphrase for key '/c/Users/Administrator/.ssh/id_rsa':
    warning: You appear to have cloned an empty repository.

    每次都需要输入公钥的密码,如果想去掉,可以参考 这里

  • 相关阅读:
    spring事务注解@Transactional注解失效场景
    Dubbo中服务消费者和服务提供者之间的请求和响应过程
    说说Java的Unsafe类
    java程序二叉树的深度优先和广度优先遍历
    重复注解与类型注解
    git pull 和 git fetch的区别?
    Java8新特性系列(Interface)
    二十种健康食品排行榜
    赞美的时机
    越过胆怯这道栅栏
  • 原文地址:https://www.cnblogs.com/kika/p/10851550.html
Copyright © 2011-2022 走看看