首页 > 其他分享 >最简单的 Git 服务器

最简单的 Git 服务器

时间:2023-07-27 16:46:10浏览次数:32  
标签:git 远程 Git SSH 简单 服务器 example

程序员的代码仓库,总是需要托管一份在服务器,这样才保险,也方便使用。

今天就来谈谈 Git 服务器。

一、代码托管服务

一般情况下,都不建议自己搭建 Git 服务器,而要使用现成的服务,也就是代码托管服务。它们都是免费的。

其中,除了最后一家 Gitee 是国内的服务,其他都是国外的服务。

这些外部服务,就不多做介绍了。本文的重点不是它们,而是想谈如果不得不自己搭建 Git 服务器,那该怎么做。

二、Git 服务器软件

自己搭建 Git 服务器的原因,无非就是不方便访问外网,不愿意代码放在别人的服务器,或者有一些定制化的需求。

这时,你可以选择开源的 Git 服务器软件。

这些软件里面,Gogs 的安装是最简单的,但是功能相对比较弱。功能越强的软件,安装越复杂。

如果你只是想远程保存一份代码,并不在意有没有 Web 界面,或者其他功能,那么根本不用安装上面这些软件,一行命令就够了。

三、Git 仓库的 SSH 传输

熟悉 Git 的同学可能知道,Git 默认支持两种传输协议:SSH 和 HTTP/HTTPS。

服务器一般都自带 SSH,这意味着,我们可以什么都不安装,只通过 SSH 就把仓库推到远程服务器。

所以,一条命令就够了。我们只要在远程服务器上,建立同名的 Git 仓库,服务器就搭建好了。


$ git init --bare [仓库名].git

上面命令中,各个部分的含义如下。

(1)git init:初始化一个 Git 仓库。

(2)--bare:表示新仓库不需要工作目录,只建立 Git 数据目录。

(3)[仓库名].git:指定仓库名,比如仓库名是example,那么就要建立一个叫做example.git的 Git 数据目录。

执行这条命令以后,一个最简易的 Git 服务器就诞生了。后面,我们就可以通过 SSH 连接,把本地代码推送到这个远程 Git 仓库了。

四、操作演示

下面,我演示一下整个操作过程。

操作分成两部分,先在远程服务器操作,然后在本地计算机操作。

4.1 远程服务器操作

下面的操作都在远程服务器完成,假设你已经通过 SSH 登录上去了。不熟悉 SSH 的同学可以看参考这篇《SSH 入门》

登录远程服务器的目的,主要是新建一个专门的用户,所有的 Git 操作都通过该用户完成。这一步其实不是必需的,但是这样后期操作比较灵活(比如仓库可以让多人共享)。


$ sudo mkdir /home/git
$ sudo useradd git
$ sudo mkdir -m 700 /home/git/.ssh
$ sudo cp ~/.ssh/authorized_keys /home/git/.ssh/

上面命令的含义如下。

(1)新建新用户的主目录/home/git

(2)新建一个用户,用户名为git

(3)新建新用户的 SSH 目录/home/git/.ssh

(4)把当前用户的公钥拷贝给git用户,以便密钥登陆,详细解释可以参考《SSH 密钥登录》

如果你只用密码登录,不使用密钥登录,那么上面第三步和第四步是不需要的,但是需要为git用户设定密码,命令如下。


$ sudo passwd git

4.2 本机计算机操作

后面的操作都在本地计算机完成。

假定上一小节的远程服务器的 IP 地址是192.168.1.25,本地的 Git 仓库名为example


$ ssh [email protected] git init --bare example.git

上面命令中,ssh [email protected]表示以git用户的身份,登录到远程服务器。后面的部分是 SSH 的一种语法,表示登录后在远程服务器执行的命令,即新建一个远程 Git 数据目录example.git

这条命令运行完,就有了一个 Git 服务器了,然后就可以推送代码了。


$ cd example
$ git remote add myServer [email protected]:example.git
$ git push myServer master

上面的命令先进入本地仓库,为远程服务器加一个别名,然后把代码推送过去。

五、另一种操作方法

上面的例子使用git init --bare命令,在远程服务器新建 Git 数据目录。其实,Git 数据目录就是一个普通目录,直接从本地计算机拷贝过去也可以。


$ scp -r example/.git [email protected]:/home/git/example.git

上面的命令使用scp工具将本地的 example仓库里面的.git子目录,拷贝到远程服务器的目录example.git。这样也能建立 Git 服务器。

六、参考链接

(完)

 

 

出处:http://www.ruanyifeng.com/blog/2022/10/git-server.html

标签:git,远程,Git,SSH,简单,服务器,example
From: https://www.cnblogs.com/mq0036/p/17585338.html

相关文章

  • git 回滚操作
    Git撤销&回滚操作(gitreset和getrevert)Git的工作流工作区:在gitaddxx之前,在自己当前分支所修改的代码内容!暂存区:已经gitaddxxx进去,且没有执行gitcommitxxx的。本地分支:已经gitcommit-mxxx提交到本地分支的。远程分支:gitpushoriginHEAD:refs/for/ma......
  • github源码python如何运行
    如何运行GitHub上的Python源码项目问题描述GitHub上有很多优秀的Python源码项目,但是对于一些新手来说,如何正确地运行这些项目可能会成为一个问题。因此,本文将提供一份解决方案,以帮助新手顺利地运行GitHub上的Python源码项目。解决方案步骤1:克隆项目首先,在GitHub......
  • 3389远程桌面连接时出现由于没有远程桌面授权服务器可以提供许可证
    原文:https://baijiahao.baidu.com/s?id=1738037840846148087&wfr=spider&for=pc 远程桌面连接出现由于没有远程桌面授权服务器可以提供许可证,远程会话被中断,请跟服务器管理员联系,怎么办呢?  首先确认你的操作系统  比如小编的是windowsserver2018年 ......
  • Dokcer学习之旅(1)——运行一个简单的容器
    基本概念镜像我们都知道,操作系统分为内核和用户空间。对于Linux而言,内核启动后,会挂载root文件系统为其提供用户空间支持。而Docker镜像(Image),就相当于是一个root文件系统。比如官方镜像ubuntu:18.04就包含了完整的一套Ubuntu18.04最小系统的root文件系统。Do......
  • openGauss学习笔记-21 openGauss 简单数据管理-GROUP BY子句
    openGauss学习笔记-21openGauss简单数据管理-GROUPBY子句GROUPBY语句和SELECT语句一起使用,用来对相同的数据进行分组。您可以对一列或者多列进行分组,但是被分组的列必须存在。21.1语法格式SELECT{*|[column,...]}[FROMfrom_item[,...]][WHEREcondition][......
  • Atcoder ARC060D Digit Sum
    看到\(n\le10^{11}\),考虑按根号分为两部分处理。对于\(b\le\sqrt{n}\),考虑直接暴力算\(\operatorname{f}(b,n)\)判断是否等于\(s\),这部分的计算量是\(O(\sqrt{n})\)级别的。对于\(\sqrt{n}<b\len\),则这个时候在\(b\)进制下\(n\)也只有两位,考虑列出\(n,s\)......
  • 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面(简单)
    题目:classSolution{public:vector<int>exchange(vector<int>&nums){for(inti=0,j=nums.size()-1;i<j;i++){if(nums[i]%2==0){//从i前开始,遇到偶数开始处理while(nums[j]%2==0&&am......
  • Git之配置多SSH-KEY
    现存账号类型:gitee账号,国产github,码云值得拥有github账号,全球最大同性交友网站gitlab账号,公司内部的工作开发 解决方案解决办法很简单,新建一个config文件就可以了。1、本地生成SSH-Key生成一个gitee用的SSH-Keyssh-keygen-trsa-C'[email protected]'-f~/.ssh/gite......
  • 软件测试|超好用超简单的Python GUI库——tkinter(十四)
    前言我们知道我们可以使用pillow绘制不同形状的图形,但是我们能不能使用tkinter实现这个功能呢,当然可以,tkinter也可以实现图形的绘制,并且可以将绘制的图形添加到我们的GUI中。我们可以通过tkinter的画布控件Canvas来实现绘制功能。Canvas画布控件Canvas控件具有两个功能,首先它......
  • 软件测试|超好用超简单的Python GUI库——tkinter(十五)
    前言上一篇文章我们介绍了tkinter的Canvas画布控件,并且使用画布控件绘制了线条,本篇文章我们将介绍使用Canvas绘制更多图形。参数介绍属性说明activedash当画布对象状态为"active"的时候,绘制虚线activefill当画布对象状态为"active"的时候,填充颜色activest......