Git協議 伺服器的搭建

2021-08-01 03:45:49 字數 4556 閱讀 7116

git 伺服器的搭建

遠端倉庫通常只是乙個純倉庫(bare repository)—乙個沒有當前工作目錄的倉庫。因為該倉庫只是乙個合作媒介,所以不需要從乙個處於已從硬碟上檢出狀態的快照;倉庫裡僅僅是git的資料。更簡單的說,純倉庫是你的專案裡的.git內容。

開始架設git伺服器的時候,需要把乙個現存的倉庫匯出為新的純倉庫—不包含當前工作目錄的倉庫。方法很簡單。把乙個倉庫轉殖為純倉庫,可以使用clone命令的–bare選項。純倉庫的目錄名以.git 結尾。

git伺服器搭建根據自己的需求選擇不同的協議

git支援http:// git:// ssh:// https:// file:// (本地)

安裝git軟體,使用yum安裝的方式

yum install git-*

-y 安裝git所有的包

git-all

git-cvs

git-daemon

git-email

git-gui

git-svn

因為要搭建git協議的伺服器,所以git-daemon是必須要安裝的,git-daemon支援兩種啟動方式,一種是git-daemon 的直接啟動方式,一種是利用centos下的xinetd來載入git程序。

# 建立乙個git版本庫

[root@yongge-git]# git init

initialized empty git repository in

/project/git/.git/

# 建立專案目錄

[root@yongge-project]# git clone –bare /project/git/.git/ my-project.git

initialized empty git repository in

/project/my-project.git/

[root@yongge

/]# tree /project/my-project.git/

/project/my-project.git/

├── branches

├── config

├── description

├── head

├── hooks

│ ├── commit-msg.sample

│ ├── post-commit.sample

│ ├── post-receive.sample

│ ├── post-update.sample

│ ├── pre-commit.sample

│ ├── prepare-commit-msg.sample

│ ├── pre-rebase.sample

│ └── update.sample

├── info

│ └── exclude

├── objects

│ ├── info

│ └── pack

└── refs

├── heads

└── tags

9 directories, 14 files

可以看到這些檔案其實和svn的配置檔案差不多。

1.2.3 git 伺服器啟動

根據官網提示我使用git daemon --reuseaddr --base-path=/project/

/project/ 執行結果失敗了,其實git守護程序結合系統執行模式有三種,一種是守護進行執行,後兩種是xinetd,sysinit

我選擇了centos 結合xined,所以在centos下可以結合xinetd來載入git服務,其實在安裝git-daemon的時候也會安裝上xined這個包。

git守護程序的埠是9418

[root@yongge/]# grep 9418 /etc/services

git 9418/tcp # git pack transfer service

git 9418/udp # git pack transfer service

來看看預設xined載入的git服務的配置檔案,具體可以去man xined 去了解一下xined

[root@yongge/]# cat /etc/xinetd.d/git

# default: off

# description: the git d?mon allows git repositories to be exported using \

# the git:// protocol.

service git

修完的配置檔案

[root@yongge/]# vim /etc/xinetd.d/git

# default: off

# description: the git d?mon allows git repositories to be exported using \

# the git:// protocol.

service git

~[root@yongge/]# /etc/init.d/xinetd restart

stopping xinetd: [failed]

starting xinetd: [ ok ]

[root@yongge/]# netstat -anlt|grep 9418

tcp 0

0 :::9418 :::* listen

1.2.4 客戶端測試

可以看到xined 結合git走的是tcp協議

客戶端測試,客戶端測試的時候只需要安裝git就行

[root@yongge-a /]# git clone git:

.0.89/my-project.git sadoc

initialized empty git repository in

/sadoc/.git/

將伺服器的my-project.git 轉殖到本地的sadoc, 不過在客戶端測試的時候我發現,git clone 在那個目錄下你轉殖的伺服器版本庫就會是你當前執行git clone的目錄

[root@wx-a /]# cd sadoc/

[root@wx-a sadoc]# git remote -v

origin git://

20.0

.0.89/my-project.git (fetch)

origin git://

20.0

.0.89/my-project.git (push)

[root@wx-a sadoc]# git remote

origin

[root@wx-a sadoc]# ls -a

. .. .git

[root@wx-a sadoc]# git remote -v

origin git://

20.0

.0.89/my-project.git (fetch)

origin git://

20.0

.0.89/my-project.git (push)

[root@wx-a sadoc]# touch aa

[root@wx-a sadoc]# git add aa

[root@wx-a sadoc]# git status

# on branch master

## initial commit

## changes to be committed:

# (use "git rm --cached ..." to unstage)

## new file: aa

#[root@yongge-a sadoc]# git commit -m "aa" #提交的時候提示我需要配置使用者名稱和郵箱

[master (root-commit) 90291de] aa

committer: root @wx-a.localdomain>

your name and email address were configured automatically based

on your username and hostname. please check that they are accurate.

you can suppress this message by setting them explicitly:

git config --global user.name "your name"

git config --global user.email [email protected]

if the identity used for

this commit is wrong, you can fix it with:

git commit --amend --author='your name '

0 files changed, 0 insertions(+), 0 deletions(-)

create mode 100644 aa

Git 搭建Git伺服器 本地協議伺服器

centos 7 x64 在終端下執行下面命令來檢查系統是否安裝git git version如果返回 git 未找到命令 則需要安裝git。執行下面命令安裝git和nfs sudo yum install y git nfs utils首先要先建立共享的資料夾 也可用已存在的 sudo mkdir...

git 伺服器搭建 協議概念

現在開發過程中,很多的實現某一些功能的工具,都是類似的伺服器 客戶端結構,即c s架構,例如訊息佇列的kafka,檔案儲存的easticsearch,包括我們日常工作中的資料庫,他都是一種c s架構,其本質上來說都是一種 儲存 讀取的操作,只是在很多時候,b端不僅僅實現了單一的儲存功能,例如kafk...

搭建基於HTTP協議的Git伺服器

如果我們想在瀏覽器上檢視git專案的檔案資訊,我們就需要用到http來生成web頁面,效果如下 我建立了乙個project專案,後面有四個鏈結,分別是摘要,短日誌,日誌和許可權資訊 點專案名可以進入檢視專案資訊,可以看到專案下的檔案資訊,後面也有四個鏈結 1.安裝軟體包 安裝三個包 2.建立git倉...