搭建 Git 服务器(基于 CentOS 7)
对于规模比较小的团队,可以直接搭建 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:\Users\Administrator\.ssh
,终端在保存之前会提示你是否保存在它指定的默认位置,一般直接回车确认即可。最终生成两个文件:
- id_rsa:私钥文件,打死都不能告诉别人
- id_rsa.pub:公钥文件,要想跟哪个服务器通信,就在哪个服务器上添加
确认
打开 Git GUI,依次点击菜单栏的 “Help->Show SSH Key”。正常情况下,你刚才生成的公钥会显示在这里,公钥末尾是你的邮箱。
把 ssh 公钥添加到服务器
默认存储公私钥对的路径是 C:\Users\Administrator\.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.
每次都需要输入公钥的密码,如果想去掉,可以参考 这里。
搭建 Git 服务器(基于 CentOS 7)的更多相关文章
- CentOS下搭建Git服务器(基于SSH协议)
1,安装Git所需依赖包 # yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel # ...
- centos 搭建git服务器
centos 6搭建git服务器 安装 rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-6.noarch.rpm yum ins ...
- CentOS 6.4 搭建git 服务器
CentOS 6.4 搭建git 服务器 (2013-11-22 19:04:09)转载▼ 标签: it 分类: Linux 此文件是依据markdown所编写,更好效果参见本人github的文档ht ...
- 在CentOS搭建Git服务器 转
在CentOS搭建Git服务器 来自 :http://www.jianshu.com/p/69ea5ded3ede 前言 我们可以GitHub发布一些开源代码的公共仓库,但对于私密仓库就需要收费了.公 ...
- CentOs上搭建git服务器
CentOs上搭建git服务器 首先安装setuptools wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0 ...
- 自定义Git之使用centos搭建git 服务器
Github 公开的项目是免费的,但是如果你不想让其他人看到你的项目就需要收费. 这时我们就需要自己搭建一台Git服务器作为私有仓库使用. 接下来我们将以 Centos 为例搭建 Git 服务器. 1 ...
- CentOS搭建Git服务器及权限管理
声明:本教程,仅作为配置的记录,细节不展开,需要您有一点linux的命令基础,仅作为配置参考. 1. 系统环境 系统: Linux:CentOS 7.2 64位 由于CentOS已经内置了OpenSS ...
- Centos 6.4搭建git服务器【转】
前阵子公司需要,让我搭个Git服务器,把之前用的SVN上代码迁移到git上去,所以就在阿里云主机上搭了一个,记录了下安装过程,留存文档以备查阅.本篇本章只涉及搭建部分的操作,更多git的使用可以参考文 ...
- 在centos搭建git服务器时,不小心把/home/git目录删除了,我是怎么恢复的
在centos搭建git服务器时,不小心把/home/git目录删除了,我是怎么恢复的 在删除掉/home/git目录后,每次 git push提交时,都让填写密码,烦 第一步:在本地找到id_rsa ...
随机推荐
- js中的object类型
特点: 每个Object类型的实例共有的属性和方法: constructor: 保存着用于创建当前对象的函数. hasOwnProperty:用于检测给定的属性在当前对象的实例中是否存在. isPro ...
- Spring Boot实现SAAS平台的基本思路
一.SAAS是什么 SaaS是Software-as-a-service(软件即服务)它是一种通过Internet提供软件的模式,厂商将应用软件统一部署在自己的服务器 上,客户可以根据自己实际需求,通 ...
- vlan的三种模式access、trunk、hybrid
untag就是普通的ethernet报文,普通PC机的网卡是可以识别这样的报文进行通讯:tag报文结构的变化是在源mac地址和目的mac地址之后,加上了4bytes的vlan信息,也就是vlan ta ...
- #include <xxx.h>和#include "xxx.h"的区别
<>代表在系统目录下查找该头文件(系统定义头文件) ""代表在用户目录下查找该头文件(自定义头文件)
- linux下的数据备份工具rsync讲解
linux下的数据备份工具 rsync(remote sync 远程同步) 名词解释: sync(Synchronize,即“同步”)为UNIX操作系统的标准系统调用,功能为将内核文件系统缓冲区的 ...
- ES调优
ES Connection timed out,调优方向 1. 使用游标滚动查询 scrollId 游标id searchResponse.getScrollId() scroll 设置游标的保留时间 ...
- Django发送邮件功能
以126邮箱为例 1 首先进126邮箱设置,开启: POP3/SMTP服务 IMAP/SMTP服务 成功开启后会获得一个授权码. 2. setting.py配置: # 配置发送邮箱 # 需要登录网 ...
- Python核心技术与实战——十|面向对象的案例分析
今天通过面向对象来对照一个案例分析一下,主要模拟敏捷开发过程中的迭代开发流程,巩固面向对象的程序设计思想. 我们从一个最简单的搜索做起,一步步的对其进行优化,首先我们要知道一个搜索引擎的构造:搜索器. ...
- C#基础知识之依赖注入
目录 1 IGame游戏公司的故事 1.1 讨论会 1.2 实习生小李的实现方法 1.3 架构师的建议 1.4 小李的小结 2 探究依赖注入 2.1 故事的启迪 2.2 正式定义依赖注入 3 依赖注入 ...
- 前端每日实战:12# 视频演示如何用纯 CSS 创作一种文字断开的交互特效
效果预览 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/LmjNgL 可交互视频教程 此视频是可以交 ...