如果與其它人合作進行開發工作(例如在公司中),那就需要乙個共享的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...