如何自己搭建簡(jiǎn)單的Git服務(wù)器
程序員的代碼倉(cāng)庫(kù),總是需要托管一份在服務(wù)器,這樣才保險(xiǎn),也方便使用。今天就來(lái)談?wù)?Git 服務(wù)器。
一、代碼托管服務(wù)
一般情況下,都不建議自己搭建 Git 服務(wù)器,而要使用現(xiàn)成的服務(wù),也就是代碼托管服務(wù)。它們都是免費(fèi)的。
GitHub Gitlab Bitbucket Codeberg sourcehut Gitee
其中,除了最后一家 Gitee 是國(guó)內(nèi)的服務(wù),其他都是國(guó)外的服務(wù)。
這些外部服務(wù),就不多做介紹了。本文的重點(diǎn)不是它們,而是想談如果不得不自己搭建 Git 服務(wù)器,那該怎么做。
二、Git 服務(wù)器軟件
自己搭建 Git 服務(wù)器的原因,無(wú)非就是不方便訪問(wèn)外網(wǎng),不愿意代碼放在別人的服務(wù)器,或者有一些定制化的需求。
這時(shí),你可以選擇開(kāi)源的 Git 服務(wù)器軟件。
Gitlab CE Gitea Gogs Onedev
這些軟件里面,Gogs 的安裝是最簡(jiǎn)單的,但是功能相對(duì)比較弱。功能越強(qiáng)的軟件,安裝越復(fù)雜。
如果你只是想遠(yuǎn)程保存一份代碼,并不在意有沒(méi)有 Web 界面,或者其他功能,那么根本不用安裝上面這些軟件,一行命令就夠了。
三、Git 倉(cāng)庫(kù)的 SSH 傳輸
熟悉 Git 的同學(xué)可能知道,Git 默認(rèn)支持兩種傳輸協(xié)議:SSH 和 HTTP/HTTPS。
服務(wù)器一般都自帶 SSH,這意味著,我們可以什么都不安裝,只通過(guò) SSH 就把倉(cāng)庫(kù)推到遠(yuǎn)程服務(wù)器。
所以,一條命令就夠了。我們只要在遠(yuǎn)程服務(wù)器上,建立同名的 Git 倉(cāng)庫(kù),服務(wù)器就搭建好了。
$ git init --bare [倉(cāng)庫(kù)名].git
上面命令中,各個(gè)部分的含義如下。
(1)git init
:初始化一個(gè) Git 倉(cāng)庫(kù)。
(2)--bare
:表示新倉(cāng)庫(kù)不需要工作目錄,只建立 Git 數(shù)據(jù)目錄。
(3)[倉(cāng)庫(kù)名].git
:指定倉(cāng)庫(kù)名,比如倉(cāng)庫(kù)名是example
,那么就要建立一個(gè)叫做example.git
的 Git 數(shù)據(jù)目錄。
執(zhí)行這條命令以后,一個(gè)最簡(jiǎn)易的 Git 服務(wù)器就誕生了。后面,我們就可以通過(guò) SSH 連接,把本地代碼推送到這個(gè)遠(yuǎn)程 Git 倉(cāng)庫(kù)了。
四、操作演示
下面,我演示一下整個(gè)操作過(guò)程。
操作分成兩部分,先在遠(yuǎn)程服務(wù)器操作,然后在本地計(jì)算機(jī)操作。
4.1 遠(yuǎn)程服務(wù)器操作
下面的操作都在遠(yuǎn)程服務(wù)器完成,假設(shè)你已經(jīng)通過(guò) SSH 登錄上去了。不熟悉 SSH 的同學(xué)可以看參考這篇《SSH 入門(mén)》。
登錄遠(yuǎn)程服務(wù)器的目的,主要是新建一個(gè)專(zhuān)門(mén)的用戶,所有的 Git 操作都通過(guò)該用戶完成。這一步其實(shí)不是必需的,但是這樣后期操作比較靈活(比如倉(cāng)庫(kù)可以讓多人共享)。
$ 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)新建一個(gè)用戶,用戶名為git
。
(3)新建新用戶的 SSH 目錄/home/git/.ssh
。
(4)把當(dāng)前用戶的公鑰拷貝給git
用戶,以便密鑰登陸。
如果你只用密碼登錄,不使用密鑰登錄,那么上面第三步和第四步是不需要的,但是需要為git
用戶設(shè)定密碼,命令如下。
$ sudo passwd git
4.2 本機(jī)計(jì)算機(jī)操作
后面的操作都在本地計(jì)算機(jī)完成。
假定上一小節(jié)的遠(yuǎn)程服務(wù)器的 IP 地址是192.168.1.25
,本地的 Git 倉(cāng)庫(kù)名為example
。
$ ssh git@192.168.1.25 git init --bare example.git
上面命令中,ssh git@192.168.1.25
表示以git
用戶的身份,登錄到遠(yuǎn)程服務(wù)器。后面的部分是 SSH 的一種語(yǔ)法,表示登錄后在遠(yuǎn)程服務(wù)器執(zhí)行的命令,即新建一個(gè)遠(yuǎn)程 Git 數(shù)據(jù)目錄example.git
。
這條命令運(yùn)行完,就有了一個(gè) Git 服務(wù)器了,然后就可以推送代碼了。
$ cd example $ git remote add myServer git@192.168.1.25:example.git $ git push myServer master
上面的命令先進(jìn)入本地倉(cāng)庫(kù),為遠(yuǎn)程服務(wù)器加一個(gè)別名,然后把代碼推送過(guò)去。
五、另一種操作方法
上面的例子使用git init --bare
命令,在遠(yuǎn)程服務(wù)器新建 Git 數(shù)據(jù)目錄。其實(shí),Git 數(shù)據(jù)目錄就是一個(gè)普通目錄,直接從本地計(jì)算機(jī)拷貝過(guò)去也可以。
$ scp -r example/.git git@192.168.1.25:/home/git/example.git
上面的命令使用scp工具將本地的 example
倉(cāng)庫(kù)里面的.git
子目錄,拷貝到遠(yuǎn)程服務(wù)器的目錄example.git
。這樣也能建立 Git 服務(wù)器。
到此這篇關(guān)于如何自己搭建簡(jiǎn)單的Git服務(wù)器的文章就介紹到這了,更多相關(guān)搭建Git服務(wù)器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Memcached簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Memcached簡(jiǎn)介,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08HTTP與HTTPS對(duì)訪問(wèn)速度、性能等的影響
HTTPS 在保護(hù)用戶隱私,防止流量劫持方面發(fā)揮著非常關(guān)鍵的作用,但與此同時(shí),HTTPS 也會(huì)降低用戶訪問(wèn)速度,增加網(wǎng)站服務(wù)器的計(jì)算資源消耗,這里就為大家簡(jiǎn)單介紹一下,需要的朋友可以參考下2018-02-02Chat2DB?Web版?服務(wù)器端安裝部署啟動(dòng)步驟
Chat2DB是款數(shù)據(jù)庫(kù)連接工具,主要就是使用JDBC做數(shù)據(jù)庫(kù)連接,外加多對(duì)接了幾個(gè)聊天AI網(wǎng)站,把數(shù)據(jù)庫(kù)和AI做了個(gè)集成,比使用傳統(tǒng)工具Navicat,再另外去AI查方便一點(diǎn),這篇文章主要介紹了Chat2DB?Web版?服務(wù)器端安裝部署啟動(dòng)流程,需要的朋友可以參考下2023-11-11jenkins插件pipeline集成持續(xù)交付管道全面介紹
這篇文章主要就jenkins插件pipeline集成持續(xù)交付管道相關(guān)內(nèi)容做一個(gè)全面介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03CyberPanel配置教程,新手安裝?CyberPanel?終極指南
CyberPanel?是第一個(gè)LiteSpeed為web服務(wù)器的Linux面板,使用LiteSpeed?Cache簡(jiǎn)單優(yōu)化之后?Gtmetrix?和?Google?PageSpeed?Insights?的評(píng)分幾乎都是A,這個(gè)結(jié)果讓人十分滿意2023-12-12網(wǎng)站控制臺(tái)directadmin中文手冊(cè) Linux下虛擬主機(jī)管理
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn),本站所提供的攝影照片,插畫(huà),設(shè)計(jì)作品,如需使用,請(qǐng)與原作者聯(lián)系2009-11-11