搭建私有git伺服器進行版本控制

架構之路發表於2018-10-11

一、安裝git


分別在伺服器和本地安裝最新版本的git


1、伺服器上原始碼安裝最新版git


通常centos上使用yum源安裝的git版本過低


檢查系統上是否已經安裝git,若已有則解除安裝


// 檢視當前git版本
# git --version
git version 1.7.1

// 解除安裝舊版本
# yum remove -y git


安裝依賴包,下載最新版本git原始碼


# yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
# wget https://github.com/git/git/archive/v2.13.2.tar.gz
# tar zxf v2.13.2.tar.gz


安裝git,配置環境變數


# cd git-2.13.2
# make prefix=/usr/local/git all
# make prefix=/usr/local/git install
# echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
# source /etc/bashrc    // 實時生效


檢視git版本號,正確顯示則安裝成功


# git --version
git version 2.13.2


若編譯時報錯如下


libgit.a(utf8.o): In function `reencode_string_iconv`:
/usr/local/src/git-2.13.2/utf8.c:463: undefined reference to `libiconv`

libgit.a(utf8.o): In function `reencode_string_len`:
/usr/local/src/git-2.13.2/utf8.c:524: undefined reference to `libiconv_open`

/usr/local/src/git-2.13.2/utf8.c:535: undefined reference to `libiconv_close`
/usr/local/src/git-2.13.2/utf8.c:529: undefined reference to `libiconv_open`

collect2: ld returned 1 exit status
make: *** [git-credential-store] Error 1


可以按照如下方式解決


// 對之前git的make 操作進行 make clean
# make clean
# wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
# tar zxf libiconv-1.14.tar.gz
# cd libiconv-1.14
# ./configure --prefix=/usr/local/libiconv
# make && make install
// 建立一個軟連結到/usr/lib
# ln -s /usr/local/lib/libiconv.so /usr/lib
# ln -s /usr/local/lib/libiconv.so.2 /usr/lib


然後


# make configure
# ./configure --prefix=/usr/local/git --with-iconv=/usr/local/libiconv/
# make && make install
# echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
# source /etc/bashrc


配置git 使用者名稱及郵箱


# git config --global user.name `your name`
# git config --global user.email `your email address`


2、本地安裝最新版git(此處演示為Windows上安裝)


  • windows上安裝直接下載最新版安裝包,雙擊->下一步… 即可完成安裝

  • 所有選項預設即可

  • 開啟 git-bash,配置git 使用者名稱和郵箱,同服務端配置第6步

  • 想要學習Java高架構、分散式架構、高可擴充套件、高效能、高併發、效能優化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分散式專案實戰學習架構師視訊免費獲取   架構群:835544715

  • 點選連結加入群聊【JAVA高階架構】:https://jq.qq.com/?_wv=1027&k=5dbERkY


二、伺服器設定


1、新增一個git使用者,為安全起見禁用shell登入


# useradd git

// 為安全起見,禁用 git 使用者的 shell 登入
vim /etc/passwd
// 修改 git 使用者的 shell 為 git-shell,路徑使用 which git-shell 檢視
// 找到如下一行
git:x:1001:1001::/home/git:/bin/bash
// 修改成如下
git:x:1001:1001::/home/git:/usr/local/git/bin/git-shell


2、初始化一個專案目錄為一個倉庫


// 進入到專案目錄
# git init


3、將該目錄克隆成為裸倉庫(作為中介)並設定裸倉庫所有者為git使用者


// 建立一個裸倉庫
# git clone --bare ProjectPath /srv/myProject.git


4、將裸倉庫新增為遠端倉庫


// 進入到專案目錄
# git remote add origin /srv/myProject.git

// 修改遠端倉庫所屬主和所屬組
# chown -R git.git /srv/myProject.git


5、將伺服器上的專案新增到遠端倉庫即 /srv/myProject.git


# git add .
# git commit -m `comment`
# git push origin master


6、在該使用者的家目錄下面儲存本地使用者的公鑰


# su git
$ cd ~
$ make .ssh
$ chmod 700 .ssh
$ cd .ssh
$ touch authorized_keys
$ chmod 600 authorized_keys
// 然後在 authorized_keys 檔案中加入本地使用者的公鑰 id_rsa.pub


7、開啟git伺服器的RSA認證


# vim /etc/ssh/sshd_config
// 找到下面3行並去掉註釋
1. RSAAuthentication yes     
2. PubkeyAuthentication yes     
3. AuthorizedKeysFile  .ssh/authorized_keys


三、本地設定(Windows端)


1、生成公鑰並交給服務端


// 開啟 git-bash,生成公鑰
$ ssh-keygen -t rsa
// 在使用者目錄下的.ssh目錄裡面會生成 id_rsa, id_rsa.pub
// 將 id_rsa.pub 裡的內容拷貝到伺服器上


2、在儲存公鑰的同級目錄下面新建config檔案指定ssh埠(可選)


==類似使用搬瓦工VPS的可能預設ssh埠不是22的需要配置這個==


Host your domain name or server ip
User 服務端新增的git使用者名稱
Hostname your domain name or server ip
Port ssh 埠
IdentityFile ~/.ssh/id_rsa


3、從伺服器克隆專案到本地


$ git clone yrscgit@yrsc0597.com:/srv/yrsc.git


4、新增遠端倉庫


四、測試


  • 本地更改,新增,刪除專案,然後推送修改到遠端倉庫

  • 伺服器專案目錄下拉取最新的版本


相關文章