搭建一个git服务器

12 December 2018

by Rango

需求

搭建一个git服务器,没有github的存储空间限制,同时仓库是私有的。

设备

  • 一台本地电脑(linux 系统)
  • 一台服务器(linux 系统)

步骤

步骤主要根据以下链接整理:
搭建属于你自己的 Git 服务器
忽略特殊文件
搭建Git服务器

1.安装git到服务器上

$ sudo apt install git

2.创建一个git用户,用来运行服务器

$ sudo adduser git

2.创建证书登录

收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。

下面介绍如何创建密钥

2.1 密钥创建

为了容易的访问服务器,我们设置一个免密 ssh 登录。首先在你本地电脑上创建一个 ssh 密钥:

$ ssh-keygen -t rsa

这时会要求你输入保存密钥的路径,这时只需要点击回车保存在默认路径。第二个问题是输入访问远程服务器所需的密码。它生成两个密钥——公钥和私钥。记下您在下一步中需要使用的公钥的位置。

现在您必须将这些密钥复制到服务器上,以便两台机器可以相互通信。在本地机器上运行以下命令:

$ cat ~/.ssh/id_rsa.pub | ssh [email protected] "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

4.初始化Git仓库(服务器端):

先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令:

$ sudo git init --bare sample.git

Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git:

$ sudo chown -R git:git sample.git

5.禁用shell登录(可选):

出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:

git:x:1001:1001:,,,:/home/git:/bin/bash

改为:

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。

6.链接本地仓库和远程仓库

6.1 创建本地版本控制仓库(如果已有git仓库就跳过此步)

现在我们需要在本地机器上新建一个基于 Git 版本控制仓库:

$ mkdir -p /home/swapnil/git/project

进入我们创建仓库的目录:

$ cd /home/swapnil/git/project

现在在该目录中创建项目所需的文件。留在这个目录并启动 git:

$ git init

6.2 链接已有仓库

到现在为止,我们一直在本地服务器上工作。现在我们必须将这些更改推送到远程服务器上,以便通过互联网访问,并且可以与其他团队成员进行协作。

$ git remote add origin ssh://[email protected]/path-to-repository.git

6.2 克隆到新目的地

如果有其他团队成员想要使用该项目,则需要将远程服务器上的仓库克隆到其本地计算机上。在本地机器进入你想克隆到的目录:

$ git clone [email protected]:/home/git/project.git

这里 /home/git/project.git 是远程服务器上的项目路径,在你本机上则会改变。

8.正常提交修改并推送

然后进入本地计算机上的目录(使用服务器上的项目名称)开始工作:

$ cd /project

在本地机器上你需要输入你的信息以便git跟踪文件修改的历史,你每次的修改都会以这个身份被记录

$ git config --global user.name "Mona Lisa"
$ git config --global user.email "Mona Lisa"

global的选项不选的话这个身份只对此仓库有效。如果同时工作在不同远程仓库,比如此服务器仓库和github,又希望两者的身份不同,那就不能使用global关键词。也许你还希望使用不同ssh公钥来登录不同远程仓库,有兴趣的读者可以自行查询了解。

现在可以在本地编辑文件,写入提交更改信息,然后将它们推送到服务器:

$ git add .
$ git commit -m 'description of the modification'

您可以使用 pull 或 push 选项在服务器和本地计算机之间推送或拉取:

将本地修改推送到远程服务器

$ git push origin master

在另一台本地机器上可以用pull拉取刚刚做的推送:
然后进入本地计算机上相应仓库的目录(使用服务器上的项目名称)开始工作:

$ cd /project
$ git pull origin master

tags: blog ubuntu linux ssh git version control git服务器 版本控制

原文:大专栏  搭建一个git服务器

原文地址:https://www.cnblogs.com/petewell/p/11601721.html

时间: 2024-10-06 14:45:30

搭建一个git服务器的相关文章

Hello Node.js之搭建一个web服务器

Node.js简述 Nodejs 是JavaScript运行时,解释器是C/C++写的,基于ChromeV8引擎, 事件驱动,非阻塞I/O模型.本系列目前参考了Node.js官网,慕课网Scott的Node.js基础,<Node即学即用>图灵系列,以及可能的网上公开资源. Nodejs包管理器是npm 包就是别人写好的库. Nodejs提供了fs,http等内置对象,操作磁盘文件.搭建服务器. 特征:单线程.事件驱动.异步非阻塞I/O模型. Node.js安装 官网安装Node.js,自带np

在Linux中搭建一个FTP服务器

在Linux中搭建一个ftp服务器,以供两个工作小组保管文件使用.禁用匿名.第一个小组使用ftp账号:ftp1,工作目录在:/var/ftp/ftp1:第二个小组使用ftp2,工作目录在:/var/ftp/ftp2. 两个小组互相不能访问各自的文件,需要限制用户不能离开自己的工作目录. [实现步骤] 1.检查安装vsftpd服务器 以root进入终端后(其他账户进入终端的可以用su root 输入密码后进入root 模式)之后,在终端命令窗口输入以下命令进行验证:# rpm –qa | grep

Linux中搭建一个ftp服务器详解

来源:Linux社区  作者:luzhi1024 详解Linux中搭建一个ftp服务器. ftp工作是会启动两个通道:控制通道 , 数据通道在ftp协议中,控制连接均是由客户端发起的,而数据连接有两种模式:port模式(主动模式)和pasv(被动模式)PORT模式:在客户端需要接收数据时,ftp_client(大于1024的随机端口)-PORT命令->ftp_server(21)  发送PORT命令,这个PORT命令包含了客户端是用什么端口来接收数据(大于1024的随机端口),在传送数据时,ft

用腾讯云Gogs搭建私有git服务器

前言 经常有需要写不能公开代码的项目,所以只好自己搭建一个私人的git服务器 Gogs的好处在于比Gitlib轻量化了好多,而且是国人写的,官方主页也是中文的 Gogs首页 腾讯云服务器配置: Ubuntu16.04 LTS 腾讯云学生版1G内存 1Mbps 准备安装 环境是标准的LNM环境:(我之前为了学PHP就已经安装好啦) sudo apt install nginx mysql-server git 配置数据库 SET GLOBAL storage_engine = 'InnoDB';

搭建一个DNS服务器群

本节索引 DNS简介 DNS解析过程 DNS资源记录 DNS主从原理 搭建完整的DNS架构 调试结果 错误分析 本篇小结 DNS简介 DNS(Domain Name System,域名系统),是Internet上作为域名和IP地址相互映射的一个分布式数据库,在这个解析库中定义了某个域名和IP的对应关系.通过DNS的解析,我们不用去记住那些难记的IP地址(数串),我们只要能记住其对应的主机名即可,像www.baidu.com.这中字符串就显得好记多了.DNS协议运行在TCP和UDP的上,对应端口号

从第一次在家听了一点小迪培训写起,搭建一个IIS服务器

今天回家终于考虑好了,学渗透.说做就做,开了电脑听小迪培训第二天,开头说的是搭建IIS,我记得我那本书上有,但是书上的是XP.于是我百度了一下"WIN7下搭建IIS服务器".搜索结果很详细,有配图,但都是一样的,控制面板下有个控制面板所有选项,我的电脑怎么没有呢,难道他们说的是企业版?我又看了下,网上的是旗舰版我的也是WIN7旗舰版,晚上问也问不到,于是我又搜"win7没有控制面板选项",,这个说的很详细,这个还是跟我的不一样,他的是internet informa

手把手教你从购买vps到搭建一个node服务器

要准备什么? 1.5刀 2.最好有FQ软件(可以用蓝灯) let's Go! 一.vps购买 vps可以选择digital ocean(do) 链接 ,由于是外国网站,响应比较慢,所以最好翻个墙. github有一个学生包的优惠,可以赠送一个50刀do优惠券.关于github学生包的申请可以去百度,申请这个需要有一个edu账号或者学生证明.github学生包,我申请大概花了2天时间,就上传了学生证 申请好了我们就一步一步的开始选购吧 1.注册账号并登录 2.确认了email后首先要激活账户 如果

搭建一个三台服务器的Memcached集群

关于memcached的基础知识可以查看博客其他博文,这里只记录了搭建的过程,谢谢! 1.分别在三台服务器上安装Memcached并启动 第一.由于memcached是基于libevent的事件处理,所以需要安装libevent yum install libevent libevent-devel 第二.上传Memcached到三台服务器(192.168.176.129/192.168.176.130/192.168.176.131)解压并安装 tar -zxvf memcached-1.2.

搭建个人Git服务器及使用

服务器 centos安装可以参照https://blog.csdn.net/u010476739/article/details/102820620 注意: 1.初始化仓库使用git init --bare生成一个裸库,只用来作为共享库,一般不在服务器上做修改. 2.如果使用root账户操作的,一定要是用chown -R git:git * 来给文件夹改变权限,不然客户端push不上去 3.服务器设置ssh不能登录git 客户端 克隆仓库到本地 git clone ssh://[email pr