云主机搭建Git服务器

前言

版本控制是一个项目不可或缺的一部分,可以帮助开发者追踪文件的变更、分支管理、版本回退、版本发布等。所以建议当开始一个项目或者有想法进行开发时,都尽量考虑用上版本控制。常用的版本控制系统有svnGit,其中Git由于其开源、分布式、快速高效等特点已俨然成版本管理系统的首选。

Git

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理,是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。由于其分布式的特点,我们完全可以只在本地保存整个项目仓库,但考虑多人协作的需求,一般情况是建立一个远程仓库,项目的所有开发者都围绕这个远程仓库进行同步和提交。虽然Github已经免费提供了这样的远程仓库给用户,但这种仓库一般是全网公开,即所有人都可以看到里面的提交。如果我们自己有云主机(最好是Linux系统)的话,要搭建一个Git服务器创建远程仓库并不难,现在让我们开始吧。

远程仓库

搭建Git服务器不需要什么复杂的工具,因为git这个工具已经包括所有的功能。

安装git

一般Linux的发行版已经内置git,如果没有的话安装一下

sudo apt-get install git

添加用户

sudo adduser git

该用户是用来运行我们git服务器的,在云主机上与我们的普通用户区分。当我们的本地git客户端与远程仓库交互时,云主机上用来运行git程序的用户就是我们刚添加的git了。对该用户设置一下密码:

sudo passwd git

禁用登陆git

由于用户git主要作为仓库使用,一般人员不可以也不应该登陆和进入git,所以使用工具git-shell禁止用户git登陆shell。

先在/etc/shells中加入/usr/bin/git-shell作为可用shell;

sudo vim /etc/shells

然后改变用户git的默认shell。

sudo chsh git -s git-shell

创建仓库

由于用户git已经禁止登陆了,我们直接使用root权限在/home/git目录上创建所有远程仓库的目录srv/

sudo mkdir /home/git/srv

此时可以在srv/上创建一个空的远程仓库,命令为:

sudo cd /home/git/srv sudo git init --bare elephant.git

其中--bare参数表示裸仓库,一般会将远程仓库初始化为裸仓库。

现在最好设置好仓库的权限,由用户git来管理,其他用户无管理权限。

sudo chown -R git /home/git/srv sudo chmod -R 770 /home/git/srv

客户端登陆

现在客户端需要与远程仓库同步,可以用ssh进行登陆,而且git也支持ssh连接。

客户端需要创建ssh-key,使用ssh-keygen创建公钥私钥

ssh-keygen -t rsa -C "xxx@email.com"

Windows一般把生成的公钥私钥放在

C:\Users\xxxx.ssh\

把.ssh\id_rsa.pub(公钥)的内容拷贝出来,放置到云主机的git用户的/home/git/.ssh/authorized_keys()中,表示已认证过的公钥。

此时,在本地git客户端则可以使用以下命令拉取到远程仓库了

git clone git@server:srv/elephant.git了

上面的仓库地址中,git表示云主机的用户git,server表示主机地址,即云主机的ip,加上后面的内容则表示云主机上的/home/git/srv/elephant.git这个裸仓库。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏鸿的学习笔记

日志采集技术笔记

使用Linux的rename机制保证文件写入要么成功,要么失败,绝对不能出现写了一半的情况。

2855
来自专栏小樱的经验随笔

一个很easy的脚本--php获取服务器端的相关信息

存档: 1 <html> 2 <head> 3 <meta http-equiv="content-type" content="...

3908
来自专栏葡萄城控件技术团队

如何在ASP.NET中生成HTML5离线Web应用

传统的Web应用程序有一个很大的症结是当用户的网络连接不好时,应用会加载失败,为了 解决这一问题,HTML5中引入了Web的离线工作的功能。离线功能使得Web应...

2146
来自专栏极客慕白的成长之路

Vagrant SSH has invalid permissions的解决与分析

我在mac下的NTFS分区里运行Vagrant up,正常启动虚拟机,但是ssh连接的时候却出现了问题,如下图:

1442
来自专栏各种机器学习基础算法

开发服务器安全加固

目的 防范因为主机没有加固,造成储存在开发服务器中的源代码和测试数据被黑客获取。 范围 本规范适合于开发服务器安全加固配置。 MYSQL 1. 下载位置 MyS...

5038
来自专栏编程软文

JConsole和JVisualJVM的入门

最近公司有一个all-in-one的项目一直会出现网络异常的问题,目前通过各方面判断是由于线程的问题,引起mysql线程问题又有可能跟定时任务,长连接,另外还有...

732
来自专栏PHP实战技术

20条Linux命令面试问答

问:1 如何查看当前的Linux服务器的运行级别?   答: ‘who -r’ 和 ‘runlevel’ 命令可以用来查看当前的Linux服务器的运行级别。 ...

3278
来自专栏运维小白

13.6 mysql数据库备份恢复

mysql数据库备份恢复目录概要 备份库 mysqldump -uroot -p123456 mysql > /tmp/mysql.sql 恢复库 mysql...

2719
来自专栏深度学习之tensorflow实战篇

linux调用sh文件的基本操作

最近做了一点和Linux有关的工作,刚刚学习,做一点和shell脚本有关的笔记。 1、创建test.sh文件 touch test.sh 2、编辑sh文件 vi...

3455
来自专栏LanceToBigData

MongoDB(一)环境搭建与初始配置

前言   最近的项目中需要用到MongoDB,所这段时间需要学习知道怎么去使用这个数据库。   这里我先简单的介绍一下什么是MongoDB,后面还会详细的介绍:...

4915

扫码关注云+社区