本文主要內容來自菜鳥教程,在它的基礎上增加一些解釋說明(紅字部分),如侵刪!
https://www.runoob.com/git/git-server.html
以 Centos 爲例搭建 Git 服務器。
1、安裝Git
$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel $ yum install git
接下來我們 創建一個git用戶組和用戶,用來運行git服務:
$ groupadd git (創建用戶組名稱爲git,名字根據自己來定)
$ useradd git -g git (添加一個用戶名爲git的用戶到git用戶組中)
注:這裏比較混淆人的地方是使用了兩個相同的名字,爲避免混淆,建議使用git_group和git_user這樣的名稱加以區分
2、在windows客戶端創建公鑰
打開Git目錄下的Git Bash,輸入ssh-keygen,回車
生成的密鑰放在id_rsa.pub中。
注:回車後會提示設置密鑰存儲的文件名,使用默認的id_rsa就好,如下圖
3、創建證書登錄
把我們的公鑰導入到服務器的/home/git/.ssh/authorized_keys文件裏,一行一個。
如果沒有該文件創建它:
$ cd /home/git/
$ mkdir .ssh
$ chmod 755 .ssh
$ touch .ssh/authorized_keys
$ chmod 644 .ssh/authorized_keys
4、初始化Git倉庫
首先我們選定一個目錄作爲Git倉庫,假定是/home/gitrepo/runoob.git,在/home/gitrepo目錄下輸入命令:
$ cd /home
$ mkdir gitrepo
$ chown git:git gitrepo/
$ cd gitrepo
注:
$ git init --bare gittest.git
Initialized empty Git repository in /home/gitrepo/gittest.git/
以上命令Git創建一個空倉庫,服務器上的Git倉庫通常都以.git結尾。然後,把倉庫所屬用戶改爲git:
$ chown -R git:git gittest.git
5、克隆倉庫
$ git clone [email protected]:/home/gitrepo/gittest.git
Cloning into 'gittest'... warning: You appear to have cloned an empty repository. Checking connectivity... done.
192.168.0.1 爲 Git 所在服務器 ip ,你需要將其修改爲你自己的 Git 服務 ip。
這樣我們的 Git 服務器安裝就完成。
注:這裏有一個非常混淆人的地方是[email protected],服務器用戶名使用git,這讓許多人以爲是跟前面的git是一個意思。本人照着教程試了好幾遍,一直提示需要輸密碼.
Cloning into 'a9school'...
[email protected]'s password:
fatal: Could not read from remote repository.
後來從別的博客中得知,這裏的git其實是之你當前使用的服務器的登錄名稱,比如說你的服務器用戶名是默認的root,那麼你的寫法就是
root@服務器ip:/home/gitrepo/gittest.git
另外,如果使用烏龜Tortorise Git clone的話,用戶名和密碼也就是你的服務器用戶名和密碼。
附常見問題:
在windows平臺下git add 的時候經常會出現錯誤:fatal: CRLF would be replaced by LF in xxx......
問題原因:
Git在windows下,默認是CRLF作爲換行符,git add 提交時,檢查文本中有LF 換行符(linux系統裏面的),則會告警。所以讓git忽略該檢查即可。
解決辦法,執行Git命令:
$ git config --global core.autocrlf false
$ git config --global core.safecrlf false
附:一定要執行兩個命令,只執行第一個不生效。
最後,非常感謝原博主菜鳥教程的分享