Git 建立Git伺服器

2021-07-10 15:58:28 字數 4237 閱讀 7958

如果與其它人合作進行開發工作(例如在公司中),那就需要乙個共享的git倉庫,開發工程師們都可以訪問,從這個共享倉庫中推送和拉取資料,這個倉庫就稱之為「git伺服器」。

建立git伺服器是比較簡單的,測試環境使用的是兩台centos7,ip分別為192.168.107.128(測試伺服器)、192.168.107.129(測試客戶端)。

首先在測試伺服器上進行操作:

1、新增乙個新使用者git

這個新新增的使用者,是用來供測試客戶端與伺服器端通訊使用的(通訊使用ssh協議),即客戶端進行pull或push時都是以git使用者的許可權來進行操作。

[root@localhost ~]# useradd git

[root@localhost ~]# passwd git

使用者建立完成後記得使用passwd來設定密碼。

2、建立git repository

新建立的使用者會在/home目錄下生成相應的目錄,進入到/home/git/目錄下進行操作:

[root@localhost ~]# cd /home/git/

[root@localhost git]# mkdir repositories

[root@localhost git]# cd repositories/

[root@localhost repositories]# git --bare init

初始化空的 git 版本庫於 /home/git/repositories/

[root@localhost repositories]# cd ..

[root@localhost git]# chown -r git:git repositories/

git –bare init:建立乙個空的git倉庫,這個倉庫能夠提供服務但不會在此伺服器上進行操作;

chown -r git:git repositories/:設定git倉庫的所有者為使用者git。

3、設定authorized_keys

authorized_keys是個配置檔案,用來存放測試客戶端的ssh-key。這個檔案應存放於測試伺服器的/home/git/目錄下,自行建立」.ssh」目錄:

[root@localhost git]# mkdir .ssh

[root@localhost git]# cd .ssh

[root@localhost .ssh]# vi authorized_keys

在測試客戶端執行」ssh-keygen」然後一路enter,缺省會存放於「/root/.ssh/」目錄中,拷貝其中的「id_rsa.pub」檔案中的key資訊到authorized_keys檔案中即可。

好了,到這裡伺服器端的工作就算是完成了,已經有了乙個基本的git伺服器可以使用了。

git伺服器建立完成後,切換到測試客戶端來進行一下測試:

[root@localhost ~]# mkdir work

[root@localhost ~]# cd work/

[root@localhost work]# git clone [email protected]:/home/git/repositories

[root@localhost work]# ls

repositories

[root@localhost work]# cd repositories/

[root@localhost repositories]# ls

[root@localhost repositories]#

如上,在測試客戶端建立了乙個work目錄,在該目錄下進行了clone操作,操作成功,獲取了乙個空的版本庫(git倉庫中還沒有檔案,當然是空的)。

[root@localhost repositories]# echo "hello,world" > hi

[root@localhost repositories]# ls

hi[root@localhost repositories]# git add hi

[root@localhost repositories]# git commit -m "add file hi"

[root@localhost repositories]# git push origin master

建立了乙個名為「hi」的檔案,輸入「hello,world」,然後在本地進行新增和提交,最後將它推送到遠端的git伺服器倉庫master分支。

這時,如果有乙個新的客戶端clone了這個git倉庫,就不會clone到乙個空的倉庫了,倉庫中會出現乙個「hi」的檔案,內容是「hello,world」。

版本衝突是倉庫中經常遇到的問題,例如兩個客戶端從同乙個伺服器clone,客戶端a修改了「hi」檔案,追加了一行」aaaaaa「,提交並推送到了git伺服器;客戶端b也修改了」hi「檔案,追加了一行」bbbbbb「,也提交並向git伺服器推送,但此時客戶端b的推送是不成功的,git伺服器會提醒客戶端b」git伺服器中的版本與客戶端b上的版本有衝突「。

客戶端a操作:

[root@localhost repositories]# echo "aaaaaa" >> hi

[root@localhost repositories]# cat hi

hello,world

aaaaaa

[root@localhost repositories]#

[root@localhost repositories]# git add hi

[root@localhost repositories]# git commit -m "add 'aaaaaa'"

[master 84beedf] add 'aaaaaa'

1 file changed, 1 insertion(+), 2 deletions(-)

[root@localhost repositories]#

[root@localhost repositories]# git push origin master

客戶端b操作:

[root@localhost repositories]# echo "bbbbbb" >> hi

[root@localhost repositories]# cat hi

hello,world

bbbbbb

[root@localhost repositories]# git add hi

[root@localhost repositories]# git commit -m "add 'bbbbbb'"

[master 1070263] add 'bbbbbb'

1 file changed, 1 insertion(+), 2 deletions(-)

[root@localhost repositories]# git push origin master

此時需要在客戶端b上拉取git伺服器中的版本,解決衝突後再提交並推送到git伺服器:

[root@localhost repositories]# git pull

[root@localhost repositories]# cat hi

hello,world

<<<<<<< head

bbbbbb

*****==

aaaaaa

>>>>>>> 84beedf9597880a33219182b34146831539915e1

[root@localhost repositories]# vi hi

[root@localhost repositories]# cat hi

hello,world

bbbbbb

aaaaaa

[root@localhost repositories]# git add hi

[root@localhost repositories]# git commit -m "resolve conflict"

[master f632248] resolve conflict

[root@localhost repositories]# git push origin master

至此,衝突解決並將最新的修改推送到了git伺服器上。

建立Git伺服器

先安裝git yum install y git 建立乙個使用者,用來執行git服務 adduser username 例如新增乙個git使用者adduser git 初始化git倉庫。進入要建立倉庫的資料夾,使用命令 git init bare 倉庫名 例如,建立乙個名為rope.git的倉庫 一...

docker中建立私有git伺服器 gitlab

現在使用git的很普遍,在開發內部如何建立個git伺服器,本文以gitlab為例,讓你分分鐘就可以搭好乙個環境 docker的威力非同一般 根據頁面說明,我們選擇一鍵式的處理,如下 wget docker compose up 執行完docker compose後,就可以獲取到gitlab的映象檔案...

Git 搭建git伺服器

環境 ubuntu16.4 1.以root使用者登陸linux後台,執行下面的命令安裝git apt install git2.建立git使用者 adduser git3.建立倉庫目錄 su git mkdir p repository myself.git4.初始化倉庫 cd repository...