基於centos搭建gitlab以及設定無密碼訪問
1.1 git與gitlab
GIT(分散式版本控制系統), 是一個開源的分散式版本控制系統,可以有效、高速的處理從很小到非常大的專案版本管理。
Gitlab是使用Git作為程式碼管理工具,並在此基礎上搭建起來的web服務。
下面介紹二者的搭建,可以按需選擇其中一種搭建。
1.2 服務端搭建(基於CentOS)
1.2.1搭建git服務
(1)安裝git
# yum -y install git
(2)檢視git版本
# git --version
CentOS7 預設安裝的是Git 1.8.3.1
# cd /
# mkdir git
# cd git
# git init --bare test.git
到此一個簡單的Git伺服器倉庫就建立完成
(4)建立git執行使用者並設定密碼
# useradd git
# passwd git
因為伺服器上的Git倉庫純粹是為了共享,所以不讓使用者直接登入到伺服器上去改工作區,並且伺服器上的Git倉庫通常都以.git結尾。然後,把使用者git的許可權變為可讀:
# chown -R git:git test.git
禁用shell登入,出於安全考慮,建立的git使用者不允許登入shell,這可以通過終端編輯/etc/passwd檔案完成。
# vi /etc/passwd
找到類似下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bash
改為:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
1.2.2搭建gitlab
以下的yum源均屬於網路源
(1)安裝和配置必要的依賴關係
# sudo yum install curl policycoreutils openssh-server openssh-clients
# sudo systemctl enable sshd
# sudo systemctl start sshd
# sudo yum install postfix
# sudo systemctl enable postfix
# sudo systemctl start postfix
# sudo firewall-cmd --permanent --add-service=http
# sudo systemctl reload firewalld
(2) 新增GitLab包伺服器和安裝包
# sudo yum install gitlab-ce
(3) 配置和啟動 GitLab
# sudo gitlab-ctl reconfigure
(4)登陸IP配置
(5)關閉gitlab的自動啟動
# systemctl disable gitlab-runsvdir.service
# systemctl enable gitlab-runsvdir.service
# systemctl start gitlab-runsvdir.service
# gitlab-cmd start
1.3 客戶端的基本使用
1.3.1 基本使用
常用操作如下:
1.獲取一個url對應的遠端Git repo, 建立一個local copy.
# git clone <URL>
2 .檢視修改更新了哪些檔案
# git status
3 .新增檔案
# git add <*>
4.檢視已經添加了的檔案
# git status
5. 抓取遠端倉庫所有分支更新併合併到本地
# git pull
6. 檢視遠端伺服器地址和倉庫名稱
# git remote -v
7.從版本庫中刪除檔案
# git rm <file>
1.3.2 客戶端無密碼訪問
背景:
Git使用https協議,每次pull, push都要輸入密碼,比較麻煩。
使用git協議,然後使用ssh金鑰。這樣可以省去每次都輸密碼。
大概需要三個步驟:
- 本地生成祕鑰
首先先確認一下是否已經有一個公鑰了。SSH 公鑰預設儲存在賬戶的主目錄下的 ~/.ssh 目錄。
# cd ~/.ssh
# ls
關鍵是看有沒有用 something 和 something.pub 來命名的一對檔案,這個 something 通常就是 id_dsa 或 id_rsa。有 .pub 字尾的檔案就是公鑰,另一個檔案則是金鑰。假如沒有這些檔案,或者乾脆連 .ssh 目錄都沒有,可以用 ssh-keygen 來建立。
# ssh-keygen
一直回車即可
- 新增公鑰到你的github帳戶
檢視公鑰
# cat ~/.ssh/id_rsa.pub
登陸github帳戶點選 SSH Keys -> 點選 Add SSH key
然後你複製上面的公鑰內容,貼上進“Key”文字域內。 title域,你隨便填一個都行。
完了,點選 Add key。
- 修改你本地的ssh remote url
編輯remote url. 使其不用https協議,改用git 協議
可以使用瀏覽器登陸你的github,在上面可以看到你的ssh協議相應的url
# vi /home/ecloud/.git/config
1.3.3 解決衝突的常用方法
本地檔案與伺服器端檔案不同步時,執行git會抱錯
常用的解決辦法就算讓服務端檔案完全覆蓋本地
# git checkout 報錯檔案路徑