git 入门教程之 git 私服搭建教程
git 私服搭建教程
前几节我们的远程仓库使用的是 github
网站,托管项目大多是公开的,如果不想让任何人都能看到就需要收费,而且 github
网站毕竟在国外,访问速度太慢,基于上述两点原因,我们有必要搭建自己的 git
服务器.
虽然我们能搭建基本的 git
服务器,但是想要做到 github
网站那种规模还不是目前能够探讨的,本节的主要目标是使用我们私有服务器对我提供类似于github
的远程仓库托管服务,以下示例以centos
服务器为例说明:
安装 git 服务
运行以下命令安装 git
服务
# 安装 git 相关依赖
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel# 安装 git
yum install git# 查看 git 版本
git --version
复制代码
详情请参考安装 git
配置 git 用户
创建 git
用户组和 git
用户,以便对外提供 git
服务
# 新增 git 用户组
groupadd git# 新增 git 用户并归属于 git 用户组
useradd git -g git
复制代码
收集 git 公钥
回忆一下,在我们使用 github
网站时,我们是不是曾经将本地电脑生成的公钥~/.ssh/id_rsa.pub
复制到 Account -> Settings -> SSH and GPG keys -> New SSH key
,而我们现在搭建的git
服务还是简单,但是这步骤必不可少,因此只能手动收集素有需要访问我们服务器的公钥文件.
我们知道需要登录我们服务器的用户公钥一般是存放在~/.ssh/id_rsa.pub
,那当前服务器作为远程服务器将这些公钥存放到哪里呢?还记得上一步我们创建了 git
用户吗?
因为 linux
系统支持多用户操作,而 git
用户就用于专门运行 git
服务,负责所有和 git
有关的事宜.因此,导入公钥文件的目录就是/home/git/.ssh/authorized_keys
文件.一个用户公钥占用一行,几个用户就有几行.
# 切换到 git 用户主目录
cd /home/git/# 创建.ssh 目录
mkdir .ssh# 赋予标准目录权限
chmod 755 .ssh# 创建authorized_keys文件
touch .ssh/authorized_keys# 赋予标签文件权限
chmod 744 .ssh/authorized_keys
复制代码
初始化 git 仓库
同样我们和github
网站类比,在 github
创建仓库时都会在当前账号下创建项目,完整的访问路径大概是这样的: git@github.com:snowdreams1006/git-demo.git
,从中我们可以看出项目仓库都有一个前缀即命名空间,这和上一步操作是不是很类似,上一步收集 git
公钥时我们也有统一的目录,这次也不例外.
假设 git
仓库存放目录在 /home/git/repos/
,同样的先创建该目录并赋予响应权限.
# 切换到 git 用户主目录
cd /home/git/# 创建 repos 目录
mkdir repos# 更改 repos 目录属主
chown git:git repos/# 切换到 repos 目录
cd repos# 初始化 git 仓库
git init --bare git-demo.git# 更改 git-demo.git 仓库属主
chown -R git:git git-demo.git
复制代码
经过上述操作,我们成功在远程服务器部署了 git
服务,并且创建了 git-demo
测试项目,实际访问路径大概是这样的 git@snowdreams1006.cn:/home/git/repos/git-demo.git
本地克隆远程仓库
身份回到本地电脑,假设本地已搭建好 git
环境,并且生成的ssh
公钥上传到远程服务器,那么我们接下来就可以和之前远程服务器是 github
网站那样的方式开发我们的项目了,唯一不同的是,接下来我们推送的远程服务器均是我们刚搭建好的主机.
需要做好心里准备,我们搭建的服务器还很简单,没有 github
网站那样可以直观操作远程仓库,但是这并不影响我们的 pull push merge
等操作哟!
git clone git@snowdreams1006.cn:/home/git/repos/git-demo.git
复制代码
git-指的是 git 用户,snowdreams1006.cn-指的是远程主机域名或ip,/home/git/repos-指的是 git 仓库的目录,git-demo.git-指的是项目名称
现在我们已经成功搭建好自己的 git
私服了,是不是很简单呢?有没有对 git
和 github
进一步理解?欢迎大家一起探讨!
转载于:https://juejin.im/post/5c9d996f6fb9a0710250596a
git 入门教程之 git 私服搭建教程相关推荐
- centos 6.8安装git_git 入门教程之 git 私服搭建教程
git 私服搭建教程 前几节我们的远程仓库使用的是 github 网站,托管项目大多是公开的,如果不想让任何人都能看到就需要收费,而且 github 网站毕竟在国外,访问速度太慢,基于上述两点原因,我 ...
- php zend framework 教程,Zend Framework入门教程之Zend_Session会话操作详解
本文实例讲述了Zend Framework入门教程之Zend_Session会话操作.分享给大家供大家参考,具体如下: 会话命名空间 实现会话 代码: require_once "Zend/ ...
- HealthKit开发快速入门教程之HealthKit数据的操作
HealthKit开发快速入门教程之HealthKit数据的操作 数据的表示 在HealthKit中,数据是最核心的元素.通过分析数据,人们可以看到相关的健康信息.例如,通过统计步数数据,人们可以知 ...
- HealthKit开发快速入门教程之HealthKit框架体系创建健康AppID
HealthKit开发快速入门教程之HealthKit框架体系创建健康AppID HealthKit开发准备工作 在开发一款HealthKit应用程序时,首先需要讲解HealthKit中有哪些类,在i ...
- HealthKit开发快速入门教程之HealthKit开发概述简介
HealthKit开发快速入门教程之HealthKit开发概述简介 2014年6月2日召开的年度开发者大会上,苹果发布了一款新的移动应用平台,可以收集和分析用户的健康数据.该移动应用平台被命名为&qu ...
- nodejs入门教程之http的get和request简介及应用
nodejs入门教程之http的get和request简介及应用 前言 上一篇文章,我介绍了nodejs的几个常用的模块及简单的案例,今天我们再来重点看一下nodejs的http模块,关于http模块 ...
- python语言if语句-Python入门教程之if语句的用法
这篇文章主要介绍了Python入门教程之if语句的用法,是Python入门的基础知识,需要的朋友可以参考下 OK分享完毕!需要Python资料的可以加QQ群:832339352 进群免费领取下面资料! ...
- java jni helloword_JNI入门教程之HelloWorld篇
JNI入门教程之HelloWorld篇 来源:互联网 宽屏版 评论 2008-05-31 09:07:11 本文讲述如何使用JNI技术实现HelloWorld,目的是让读者熟悉JNI的机制并编写第 ...
- linux lvm界面,Linux使用入门教程之LVM
Linux使用入门教程之LVM 1.pvscan #查看当前系统是否存在 PV(物理卷) 2.fdisk -l #查看当前系统分区 3.pvcreate /dev/sda{5,6} /dev/sdb1 ...
最新文章
- 九度OJ-1042-最长公共子序列(LCS)
- Python科学计算工具:NumPy第一部分
- Unicode和UTF-8的区别
- Mysql常用命令思维导图
- Navigation Drawer详解-Google推出的用来取代Sliding Menu的控件(一
- 默认方法一种扩展旧代码的方法
- 阅读react-redux源码(三) - mapStateToPropsFactories、mapDispatchToPropsFactories和mergePropsFactories
- c++局部对象是什么_程序员每日一题-GCROOT对象
- 周志华团队 | TensorFlow开源决策森林库TF-DF
- 通过创建制定版本react-native项目解决“Unable to resolve module `AccessibilityInfo` ”的问题...
- visio业务流程图教学_Visio流程图入门
- 祈求代码不出 Bug 该拜哪个“神仙”?
- python制作音乐播放器_python实现音乐播放器 python实现花框音乐盒子
- Matlab中Savitzky-Golay filtering(最小二乘平滑滤波)函数sgolayfilt的使用方法
- MSP430 G2553 单片机 口袋板 日历 时钟 闹钟 万年历 电子时钟 秒表显示
- 逻辑运算符和逻辑表达式(逻辑或、逻辑与、逻辑非)
- STC51单片机串口波特率设置之BRT设置
- ndk开发字符串转十六进制!音视频时代你还不会NDK开发?已拿offer
- ReactHooks——制作一个简单的瀑布流(css)
- Android的USB通信(AOA连接)