CentOS7搭建git服務器

前言

本文內容簡單,難點在於中間遇到的問題。
這個博文假設大家已經有了一定的linux和git基礎。

環境準備

CentOS 7.5.1804(服務器,IP112.74.39.31)
Windows8.1 專業版(客戶端)
Git 2.9.5(安裝在服務器上)
Vim(CentOS自帶即可,使用vi效果也一樣)

總體步驟

1、在CentOS上新建一個git倉庫
2、在CentOS上新建一個賬戶,設置好各種權限
3、在Windows上測試git clone、git push、git pull這三個常用命令
4、添加SSH免密操作
5、實例:上傳一個項目

詳細過程

1、新建一個git倉庫

cd /srv
mkdir gitserver
cd gitserver
mkdir test
cd test
git init

⇒ Initialized empty Git repository in /srv/gitserver/test/.git/
表示新建成功

2、新建一個賬戶

useradd littlegit

什麼都沒有回顯表示成功

3、設置密碼

passwd littlegit

4、設置賬號的登錄權限
如果不考慮安全問題,可以不做這一步

vim /etc/passwd

修改和littlegit有關的權限,
防止利用這個賬戶登錄CentOS進行操作,

將
littlegit:x:1004:1004::/home/littlegit:/bin/bash 
改爲
littlegit:x:1004:1004::/home/littlegit:/usr/bin/git-shell
然後 Esc -> :wq 保存退出

其格式爲
註冊名:口令:用戶標識號:組標識號:用戶名:用戶主目錄:命令解釋程序
在更改之前請確認/usr/bin下是否存在git-shell,
如果不存在,可以找到git-shell的位置(一般在git安裝目錄的bin下),
使用軟連接搞一個出來,我的是在/usr/local/git/bin下,軟連接命令如下

ln -s /usr/local/git/bin/git-shell /usr/bin/git-shell

5、給賬戶git倉庫的權限

chown -R littlegit:littlegit /srv/gitserver/

我這裏是把這個文件夾和其下的所有東西的權限都給了littlegit這個用戶,當然也可以單獨給一個文件或者文件夾的權限,我這裏是打算以後的項目都放在這下面,所以這麼搞

6、測試git clone

測試的東西事情基本都在Windows下操作,即客戶端

git clone [email protected]:/srv/gitserver/test/.git

輸入littlegit的密碼之後得到以下結果,很遺憾,你雖然成功了,但是體驗不到失敗多次那次成功的喜悅感
⇒ warning: You appear to have cloned an empty repository.

如果得到的結果是
⇒ Permission denied, please try again.
那你應該是操作了第四步,沒有操作成功,兩條路,認真檢查第四步or去掉第四步的操作

7、測試git push
在Windows剛拉取下來的git倉庫裏面增加點東西,git add和git commit一下,然後git push,此時需要輸入密碼,如果報錯如下
在這裏插入圖片描述
或者報錯如下
在這裏插入圖片描述

不要驚慌,問題不大,無傷大雅,看報錯,咳咳咳,沒看懂,關於第一個圖的報錯,我們弱弱地新建一個dev分支進行測試,

git checkout -b dev
git push --set-upstream origin dev

嗯,這次上傳成功了,改點東西,使用git push一下,發現也沒什麼問題

關於第二個圖的報錯,好像有點看懂了,是權限不夠,再操作一下第五步就行了

還有一個報錯,不想復現了,大晚上的,剛聽完QQ小冰給我講的一個鬼故事,現在我只想躲在被窩裏面瑟瑟發抖;這個報錯的大義是git-upload-pack找不到,只需要將git安裝目錄下的bin下的git-upload-pack軟連接到/usr/bin下即可
ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack
在遇到git-receive-pack找不到的時候同理

8、測試git pull
在CentOS上

cd /srv/gitserver/test/
git checkout -b master
git merge dev

在Windows上

git checkout master
git pull

發現很完美,也沒有問題,測試完成這個之後,其實搭建git服務器已經結束了

9、SSH免密操作設置過程
先睡個覺先

10、實例:從零上傳一個項目
先睡個覺先

參考

https://yq.aliyun.com/articles/206382?spm=a2c4e.11155472.0.0.140b3004NkeVkt
https://www.cnblogs.com/songxingzhu/p/6364700.html
https://blog.csdn.net/dxk539687357/article/details/53080850
https://blog.csdn.net/w252064/article/details/82691343

後感

是時候寫點看起來有點高大上的博客了,要不然食屎都搶不到熱的
其實在linux上是可以搭建github或者gitlab的鏡像的,大家有空有興趣可以去嘗試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章