前言:大家都知道,git是非常方便的版本控制工具,目前网上有很多免费的git仓库可以给我们使用,但是有些时候我们并不放心将我们的项目寄放在别人的服务器上,这个时候就需要自己搭建一个git服务器,十分的简单。这文介绍如何在阿里云服务器上搭建自己的git服务器。


1.安装git

在Ubuntu系统中,git安装只需要简单命令就可以完成,只需要打开终端,输入如下命令:

sudo apt-get update
sudo apt-get install git

git是分布式的,每一个安装了git的电脑,既是客户端,也是服务器,git与git之间可以相互通信,而我们所谓的git服务器,实际上和我们自己的电脑没有什么本质上的差别。但是,我们为了更有效的管理项目,都采取中心化的管理方式,因此创建一个“git服务器”,作为其他所有人提交代码的最终终端。

2.创建git用户及权限

我们当然不允许直接使用root用户来与服务器进行通信交互了,所以,我们创建一个git用户,作为今后提交代码的用户。

使用命令:adduser git,创建新用户。可以在/home目录下看到新出现的git目录。

由于git用户的特殊性,我们不希望用户通过ssh连接到服务器上面去,所以,需要给git用户添加一定的权限。编辑系统权限文件:

  • 使用命令:vi /etc/passwd,打开文件;
  • 找到类似一行:git:x:1001:1001:,,,:/home/git:/bin/bash,应该是在最后一行;
  • 修改为:git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell。

3.公钥

git里面比较特殊的一步操作,通信的时候,客户端与服务器需要一个证书进行验证。

(1)客户端(本机)如何生成公钥?可参考:生成 SSH 公钥

Linux自带ssh工具,可以很方便地生成和查看ssh公钥。

  • 查看本机时候存在ssh公钥,命令:cat ~/.ssh/id_rsa.pub。
  • 若存在公钥,上述命令会返回一个很长的字符串,那个东西就是我们想要的公钥。
  • 若不存在公钥,返回为空或者报错,使用命令:ssh-keygen。不用管问什么,默认直接回车就行,创建完毕之后再次查询公钥,返回我们需要的字符串了。

(2)服务器添加公钥:在/home/git目录下,使用命令:mkdir .ssh,cd .ssh,vi authorized_keys。然后把自己的公钥粘贴进去,保存退出。(vim常用命令总结

如果团队很小,把每个人的公钥收集起来放到服务器的/home/git/.ssh/authorized_keys文件里就是可行的。如果团队有几百号人,就没法这么玩了,这时,可以用Gitosis来管理公钥。

4.初始化一个git仓库

我选择把我的仓库放在/var目录下,当然可以放在其他地方,最后只需要记住完整目录即可。

新建git目录并修改其权限,使用git命令初始化一个仓库:

  • 进入想要的目录:cd /var。
  • 创建文件夹:mkdir git。
  • 修改权限:chown -R git:git git,chmod 777 git。
  • 进入git目录:cd git。
  • 初始化自己的仓库:git init --bare MyWeb.git。

完成之后,我们的远程仓库地址为:git@IP地址:/var/git//MyWeb.git。这的远程地址在之后会用得上。

注意:.git目录必须要有可读写权限,因为当我们在push的时候,是使用git用户推送到服务器上面去,会有一个写入的过程,如果不赋予可写权限,push就会失败。所以使用命令:chown -R git:git MyWeb.git。

5.测试

(1)克隆项目:git clone git@IP地址:/var/git/MyWeb.git

(2)上传项目:

  • 本地项目文件夹目录下,鼠标右键“Git Bash Here”
  • 建立本地仓库,命令:git init。
  • 添加目录所有文件,命令:git add *。提交命令:git commit -m "init files"。
  • 与远程仓库绑定,命令:git remote add origin git@47.95.192.***:/var/git/MyWeb.git。
  • 绑定成功后就可以使用push和pull命令进行上传和下拉了,建议先pull一下:git pull --rebase origin master。成功后在push上去:git push -u origin master。

在push的时候克隆会遇到一些问题,根据错误提示百度解决方案就好了,有可能是权限原因,或者是文件冲突等。比如我遇到了错误:failed to push some refs to 'git@47.95.192.***:/var/git/MyWeb.git' ,原因是远程仓库中有文件不在本地仓库,需要先pull才能push。

好了,现在可以正常使用自己的git服务器了,后续更多git操作就不多说了,初学者可以看看廖雪峰的git教程

参考链接

在阿里云上搭建自己的git服务器:https://www.cnblogs.com/herd/p/7063091.html

push出现错误:https://jingyan.baidu.com/article/f3e34a12a25bc8f5ea65354a.html


本文版权归作者AlvinZH和博客园所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.

#阿里云#云服务器搭建git服务器的更多相关文章

  1. 在服务器搭建git服务器

    服务端操作 安装Git及创建用户组.用户 123 yum install gitgroupadd gitadduser git -g git 禁止用户git登录 修改/etc/passwd文件: 找到 ...

  2. 阿里云 linux搭建git服务器

    git是非常方便的版本控制工具,目前网上有很多免费的git仓库可以给我们使用,但是有些时候我们并不放心将我们的项目寄放在别人的服务器上,这个时候就需要自己搭建一个git服务器. 在linux上面搭建g ...

  3. 腾讯云,搭建Git服务器

    下载安装 git 任务时间:5min ~ 10min Git 是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 此实验以 CentOS 7.2 x64 的系统为环境,搭建 ...

  4. 开源网站云查杀方案,搭建自己的云杀毒-搭建ClamAV服务器

    开源网站云查杀方案,搭建自己的云杀毒 搭建ClamAV服务器 1        前言: 在上一篇我们已经演示了整个方案,传送门<开源网站云查杀方案,搭建自己的云杀毒>:https://ww ...

  5. 在CentOS搭建Git服务器 转

    在CentOS搭建Git服务器 来自 :http://www.jianshu.com/p/69ea5ded3ede 前言 我们可以GitHub发布一些开源代码的公共仓库,但对于私密仓库就需要收费了.公 ...

  6. Centos 6.4搭建git服务器【转】

    前阵子公司需要,让我搭个Git服务器,把之前用的SVN上代码迁移到git上去,所以就在阿里云主机上搭了一个,记录了下安装过程,留存文档以备查阅.本篇本章只涉及搭建部分的操作,更多git的使用可以参考文 ...

  7. 在Linux上用Apache搭建Git服务器

    在Linux上用Apache搭建Git服务器   最近在学Linux,终于在Linux上用Apache搭建起了Git服务器,在此记录一下. 服务器:阿里云服务器 Linux版本:CentOS 6.5 ...

  8. 搭建Git服务器

    在远程仓库一节中,我们讲了远程仓库实际上和本地仓库没啥不同,纯粹为了7x24小时开机并交换大家的修改. GitHub就是一个免费托管开源代码的远程仓库.但是对于某些视源代码如生命的商业公司来说,既不想 ...

  9. Git学习笔记(10)——搭建Git服务器

    本文主要记录了Git服务器的搭建,以及一些其他的配置,和最后的小总结. Git远程仓库服务器 其实远程仓库和本地仓库没啥不同,远程仓库只是每天24小时开机为大家服务,所以叫做服务器.我们完全可以把自己 ...

随机推荐

  1. 【Unity】1.3 Unity3D游戏开发学习路线

    分类:Unity.C#.VS2015 创建日期:2016-03-23 一.基本思路 第1步--了解编辑器 首先了解unity3d的菜单,视图界面.这些是最基本的基础,可以像学word操作一样,大致能明 ...

  2. C程序之修改Windows的控制台大小

    //change the console size #include <stdio.h> #include<stdlib.h> //必须有 int main(int argc, ...

  3. S3 exercise -- 文件操作&函数

    编码 请说明python2 与python3中的默认编码是什么? # 答案 py2默认ASCII码,py3默认的utf8 为什么会出现中文乱码?你能列举出现乱码的情况有哪几种? # 答案 #codin ...

  4. 命令行中开启mySQL数据库服务

    sudo /Applications/XAMPP/xamppfiles/bin/mysql.server start  

  5. TurtleBot教程

    TurtleBot TurtleBot combines popular off-the-shelf robot components like the iRobot Create, Yujin Ro ...

  6. SSH整合 第五篇 struts2的到来

    struts2的好处,web层的显示,同时Action类相当于MVC模式的C.整合进来的话,是通过与Spring整合,减少重复代码,利用IoC和AOP. 1.struts-2.5.2.jar 以上是s ...

  7. (矩阵快速幂) Fibonacci -- poj -- 3070

    链接: http://poj.org/problem?id=3070   Fibonacci Time Limit: 1000MS   Memory Limit: 65536K Total Submi ...

  8. Scala偏函数与部分函数

    函数 1.部分函数 部分应用函数(Partial Applied Function)是缺少部分参数的函数,是一个逻辑上概念. def sum(x: Int, y: Int, z: Int) = x + ...

  9. 【最大流之Dinic算法】POJ1273 【 & 当前弧优化 & 】

    总评一句:Dinic算法的基本思想比较好理解,就是它的当前弧优化的思想,网上的资料也不多,所以对于当前弧的优化,我还是费了很大的功夫的,现在也一知半解,索性就写一篇博客,来发现自己哪里的算法思想还没理 ...

  10. underscore chain

    //可以在面向对象或者函数的风格下使用Underscore_.map([1, 2, 3], function(n){ return n * 2; }); //一般习惯用这种 _([1, 2, 3]). ...