时间:2022-12-06来源:www.pcxitongcheng.com作者:电脑系统城
程序员的代码仓库,总是需要托管一份在服务器,这样才保险,也方便使用。今天就来谈谈 Git 服务器。
一般情况下,都不建议自己搭建 Git 服务器,而要使用现成的服务,也就是代码托管服务。它们都是免费的。
1 2 3 4 5 6 |
GitHub Gitlab Bitbucket Codeberg sourcehut Gitee |
其中,除了最后一家 Gitee 是国内的服务,其他都是国外的服务。
这些外部服务,就不多做介绍了。本文的重点不是它们,而是想谈如果不得不自己搭建 Git 服务器,那该怎么做。
自己搭建 Git 服务器的原因,无非就是不方便访问外网,不愿意代码放在别人的服务器,或者有一些定制化的需求。
这时,你可以选择开源的 Git 服务器软件。
1 2 3 4 |
Gitlab CE Gitea Gogs Onedev |
这些软件里面,Gogs 的安装是最简单的,但是功能相对比较弱。功能越强的软件,安装越复杂。
如果你只是想远程保存一份代码,并不在意有没有 Web 界面,或者其他功能,那么根本不用安装上面这些软件,一行命令就够了。
熟悉 Git 的同学可能知道,Git 默认支持两种传输协议:SSH 和 HTTP/HTTPS。
服务器一般都自带 SSH,这意味着,我们可以什么都不安装,只通过 SSH 就把仓库推到远程服务器。
所以,一条命令就够了。我们只要在远程服务器上,建立同名的 Git 仓库,服务器就搭建好了。
1 | $ git init --bare [仓库名].git |
上面命令中,各个部分的含义如下。
(1)git init
:初始化一个 Git 仓库。
(2)--bare
:表示新仓库不需要工作目录,只建立 Git 数据目录。
(3)[仓库名].git
:指定仓库名,比如仓库名是example
,那么就要建立一个叫做example.git
的 Git 数据目录。
执行这条命令以后,一个最简易的 Git 服务器就诞生了。后面,我们就可以通过 SSH 连接,把本地代码推送到这个远程 Git 仓库了。
下面,我演示一下整个操作过程。
操作分成两部分,先在远程服务器操作,然后在本地计算机操作。
下面的操作都在远程服务器完成,假设你已经通过 SSH 登录上去了。不熟悉 SSH 的同学可以看参考这篇《SSH 入门》。
登录远程服务器的目的,主要是新建一个专门的用户,所有的 Git 操作都通过该用户完成。这一步其实不是必需的,但是这样后期操作比较灵活(比如仓库可以让多人共享)。
1 2 3 4 |
$ 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
用户,以便密钥登陆。
如果你只用密码登录,不使用密钥登录,那么上面第三步和第四步是不需要的,但是需要为git
用户设定密码,命令如下。
1 | $ sudo passwd git |
后面的操作都在本地计算机完成。
假定上一小节的远程服务器的 IP 地址是192.168.1.25
,本地的 Git 仓库名为example
。
1 | $ ssh git@192.168.1.25 git init --bare example.git |
上面命令中,ssh git@192.168.1.25
表示以git
用户的身份,登录到远程服务器。后面的部分是 SSH 的一种语法,表示登录后在远程服务器执行的命令,即新建一个远程 Git 数据目录example.git
。
这条命令运行完,就有了一个 Git 服务器了,然后就可以推送代码了。
1 2 3 |
$ cd example $ git remote add myServer git@192.168.1.25:example.git $ git push myServer master |
上面的命令先进入本地仓库,为远程服务器加一个别名,然后把代码推送过去。
上面的例子使用git init --bare
命令,在远程服务器新建 Git 数据目录。其实,Git 数据目录就是一个普通目录,直接从本地计算机拷贝过去也可以。
1 | $ scp -r example/.git git@192.168.1.25:/home/git/example.git |
上面的命令使用scp工具将本地的 example
仓库里面的.git
子目录,拷贝到远程服务器的目录example.git
。这样也能建立 Git 服务器。
2024-07-07
myeclipse怎么导入tomcat教程2024-07-07
myeclipse如何启动tomcat2024-07-07
myeclipse如何绑定tomcat上线了一个小的预约程序,配置通过Nginx进行访问入口,默认的日志是没有请求时间的,因此需要配置一下,将每一次的请求的访问响应时间记录出来,备查与优化使用....
2023-03-17