版本控制系統

第1章 版本控制系統

1.1 關於版本控制

1.1.1 本地版本控制

爲何須要版本控制?html

        

        本地版本控制系統 許多人習慣用複製整個項目目錄的方式來保存不一樣的版本,或許還會更名加上備份時間以示區別。這麼作惟一的 好處就是簡單,可是特別容易犯錯。有時候會混淆所在的工做目錄,一不當心會寫錯文件或者覆蓋意想外的文件。linux

image.png 

有了又怎麼樣?git

自動生成備份github

知道改動的地方web

隨時回滾編程

1.1.2 常見版本管理工具

SVNvim

集中式的版本控制系統,只有一箇中央數據倉庫,若是中央數據倉庫掛了或者不可訪問,全部的使用者沒法使用SVN,沒法進行提交或備份文件。windows

image.png 

image.png 

 

Gitcentos

分佈式的版本控制系統,在每一個使用者電腦上就有一個完整的數據倉庫,沒有網絡依然可使用Git。固然爲了習慣及團隊協做,會將本地數據同步到Git服務器或者GitHub等代碼倉庫。瀏覽器

image.png 

1.1.3 Git簡介

官網:https://git-scm.com

git是一個分佈式版本控制軟件,最初由林納斯·託瓦茲(Linus Torvalds)創做,於2005年以GPL發佈。最初目的是爲更好地管理Linux內核開發而設計。

Git 官方中文手冊 https://git-scm.com/book/zh/v2

1.1.4 Git歷史

2002年開始,林納斯·託瓦茲決定使用BitKeeper做爲Linux內核主要的版本控制系統用以維護代碼。由於BitKeeper爲專有軟件,這個決定在社區中長期遭受質疑。在Linux社區中,特別是理查德·斯托曼與自由軟件基金會的成員,主張應該使用開放源代碼的軟件來做爲Linux核心的版本控制系統。林納斯·託瓦茲曾考慮過採用現成軟件做爲版本控制系統(例如Monotone),但這些軟件都存在一些問題,特別是性能不佳。現成的方案,如CVS的架構,受到林納斯·託瓦茲的批評。

2005年,安德魯·垂鳩寫了一個簡單程序,能夠鏈接BitKeeper的存儲庫,BitKeeper著做權擁有者拉里·麥沃伊認爲安德魯·垂鳩對BitKeeper內部使用的協議進行逆向工程,決定收回免費使用BitKeeper的受權。Linux內核開發團隊與BitMover公司進行蹉商,但沒法解決他們之間的歧見。林納斯·託瓦茲決定自行開發版本控制系統替代BitKeeper,以十天的時間,編寫出第一個git版本。

第2章 GIT安裝配置

2.1 安裝git

2.1.1 環境說明

[root@gitlab ~]# rpm -qa centos-release

centos-release-7-2.1511.el7.centos.2.10.x86_64

[root@gitlab ~]# uname -a

Linux gitlab 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

[root@gitlab ~]# getenforce

Disabled

[root@gitlab ~]# systemctl status firewalld.service

firewalld.service - firewalld - dynamic firewall daemon

   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)

   Active: inactive (dead)

 

2.1.2 Yum安裝Git

centos 自帶git

[root@gitlab ~]# rpm -qa git

git-1.8.3.1-11.el7.x86_64

 

安裝方法

yum install git -y

2.1.3 編譯安裝

編譯安裝能夠安裝較新版本的git

Git下載地址: https://github.com/git/git/releases

安裝依賴關係

yum install curl-devel expat-devel gettext-devel  openssl-devel zlib-devel

 

編譯安裝

tar -zxf git-2.0.0.tar.gz

cd git-2.0.0

make configure

./configure --prefix=/usr

make  

make install

 

2.2 初次運行 Git 前的配置

2.2.1 Git全局配置

命令集

git config --global user.name "wuhuang"                         #配置git使用用戶

git config --global user.email "xxxxxxxxxxx@163.com"   #配置git使用郵箱

git config --global color.ui true                                        #語法高亮

git config --list                                                                  #查看全局配置

 

配置結果

[root@gitlab ~]# git config --list

user.name=wuhuang

user.email=xxxxxxxxxxx@163.com

color.ui=true

 

生成的配置文件

[root@gitlab ~]# cat .gitconfig

[user]

name = wuhuang

email = xxxxxxxxxxx@163.com

[color]

ui = true

2.2.2 獲取幫助

使用Git時須要獲取幫助,有三種方法能夠找到Git命令的使用手冊:

git help <verb>

git <verb> --help

man git-<verb>

 

例如:要想得到配置命令的幫助手冊,執行

git help config

 

2.3 初始化GIT工做目錄

mkdir git_data                            # 建立目錄

cd git_data/                              # 進入目錄

git init                                  # 初始化

git status                                # 查看工做區狀態

 

操做過程

[root@gitlab ~]# mkdir git_data

[root@gitlab ~]# cd git_data/

[root@gitlab git_data]# git init

初始化空的 Git 版本庫於 /root/git_data/.git/

[root@gitlab git_data]# git status

# 位於分支 master

#

# 初始提交

#

無文件要提交(建立/拷貝文件並使用 "git add" 創建跟蹤)

 

Git版本庫目錄結構

[root@gitlab git_data]# tree .git/

.git/

├── branches

├── config

├── description

├── HEAD

├── hooks

   ├── applypatch-msg.sample

   ├── commit-msg.sample

   ├── post-update.sample

   ├── pre-applypatch.sample

   ├── pre-commit.sample

   ├── prepare-commit-msg.sample

   ├── pre-push.sample

   ├── pre-rebase.sample

   └── update.sample

├── info

   └── exclude

├── objects

   ├── info

   └── pack

└── refs

    ├── heads

    └── tags

 

9 directories, 13 files

2.4 Git命令常規操做

2.4.1 經常使用命令說明

命令

命令說明

命令

命令說明

add

添加文件內容至索引

log

顯示提交日誌

bisect

經過二分查找定位引入 bug 的變動

merge

合併兩個或更多開發歷史

branch

列出、建立或刪除分支

mv

移動或重命名一個文件、目錄或符號連接

checkout

檢出一個分支或路徑到工做區

pull

獲取併合並另外的版本庫或一個本地分支

clone

克隆一個版本庫到一個新目錄

push

更新遠程引用和相關的對象

commit

記錄變動到版本庫

rebase

本地提交轉移至更新後的上游分支中

diff

顯示提交之間、提交和工做區之間等的差別

reset

重置當前HEAD到指定狀態

fetch

從另一個版本庫下載對象和引用

rm

從工做區和索引中刪除文件

grep

輸出和模式匹配的行

show

顯示各類類型的對象

init

建立一個空的

status

顯示工做區狀態

Git

版本庫或從新初始化一個已存在的版本庫

tag

建立、列出、刪除或校驗一個GPG簽名的 tag 對象

2.4.2 經常使用操做示意圖

image.png 

文件的狀態變化週期

image.png 

2.4.3 建立數據—提交數據

命令集

touch README

git status

git add README

git status

git commit -m 'first commit'   #git commit提交暫存文件至版本庫

命令說明:

git add  * 添加到暫存區域

git commit    提交git倉庫   -m 後面接上註釋信息,內容關於本次提交的說明,方便本身或他人查看

修改或刪除原有文件

 

建立文件

[root@gitlab git_data]# touch README

[root@gitlab git_data]# git status

# 位於分支 master

#

# 初始提交

#

# 未跟蹤的文件:

#   (使用 "git add <file>..." 以包含要提交的內容)

#

# README

提交爲空,可是存在還沒有跟蹤的文件(使用 "git add" 創建跟蹤)

 

添加文件跟蹤——由工做目錄提交到暫存區域

[root@gitlab git_data]# git add README

[root@gitlab git_data]# git status

# 位於分支 master

#

# 初始提交

#

# 要提交的變動:

#   (使用 "git rm --cached <file>..." 撤出暫存區)

#

# 新文件:    README

#

 

由暫存區提交到本地倉庫

[root@gitlab git_data]# git commit -m 'first commit'  

[master(根提交) 4ce5110] first commit

 1 file changed, 0 insertions(+), 0 deletions(-)

 create mode 100644 README

 

2.4.4 添加新文件

常規方法

git add  *

git commit

 

簡便方法

git commit -a  -m "註釋信息"

-a 表示直接提交

Tell the command to automatically stage files that have been modified and deleted, but new files you have not told Git about are not affected.

 

2.4.5 刪除暫存區數據

命令說明:

沒有添加到暫存區的數據直接rm刪除便可。

已經添加到暫存區數據:

git rm --cached database     

#→將文件從git暫存區域的追蹤列表移除(並不會刪除當前工做目錄內的數據文件)

git rm -f database

#→將文件數據從git暫存區和工做目錄一塊兒刪除

 

命令實踐:

建立新文件

[root@gitlab git_data]# touch test

[root@gitlab git_data]# ls

README  test

[root@gitlab git_data]# git status

# 位於分支 master

# 未跟蹤的文件:

#   (使用 "git add <file>..." 以包含要提交的內容)

#

# test

提交爲空,可是存在還沒有跟蹤的文件(使用 "git add" 創建跟蹤)

將文件添加到暫存區域

[root@gitlab git_data]# git add test

[root@gitlab git_data]# git status

# 位於分支 master

# 要提交的變動:

#   (使用 "git reset HEAD <file>..." 撤出暫存區)

#

# 新文件:    test

#

將文件從git暫存區域的追蹤列表移除(方法1

[root@gitlab git_data]# git rm --cached test

rm 'test'

[root@gitlab git_data]# git status

# 位於分支 master

# 未跟蹤的文件:

#   (使用 "git add <file>..." 以包含要提交的內容)

#

# test

提交爲空,可是存在還沒有跟蹤的文件(使用 "git add" 創建跟蹤)

將文件從git暫存區域的追蹤列表移除(方法2

[root@gitlab git_data]# git add test

[root@gitlab git_data]# git reset HEAD test

[root@gitlab git_data]# git status

# 位於分支 master

# 未跟蹤的文件:

#   (使用 "git add <file>..." 以包含要提交的內容)

#

# test

提交爲空,可是存在還沒有跟蹤的文件(使用 "git add" 創建跟蹤)

將文件數據從git暫存區和工做目錄一塊兒刪除

[root@gitlab git_data]# git add test

[root@gitlab git_data]# git status

# 位於分支 master

# 要提交的變動:

#   (使用 "git reset HEAD <file>..." 撤出暫存區)

#

# 新文件:    test

#

[root@gitlab git_data]# git rm -f test

rm 'test'

[root@gitlab git_data]# ls

README

 

2.4.6 重命名暫存區數據

沒有添加到暫存區的數據直接mv/rename更名便可。

已經添加到暫存區數據:

git mv README NOTICE

 

2.4.7 查看歷史記錄

git log                                     #→查看提交歷史記錄

git log -2                                   #→查看最近幾條記錄

git log -p -1                                 #-p顯示每次提交的內容差別,例如僅查看最近一次差別

git log --stat -2                              #--stat簡要顯示數據增改行數,這樣可以看到提交中修改過的內容,對文件添加或移動的行數,並在最後列出全部增減行的概要信息

git log --pretty=oneline                       #--pretty根據不一樣的格式展現提交的歷史信息

git log --pretty=fuller -2                      #→以更詳細的模式輸出提交的歷史記錄

git log --pretty=fomat:"%h %cn"               #→查看當前全部提交記錄的簡短SHA-1哈希字串與提交者的姓名,其餘格式見備註。

還可使用format參數來指定具體的輸出格式,這樣很是便於後期編程的提取分析哦,經常使用的格式有:

格式

說明

格式

說明

%s

提交說明。

%h

提交對象的簡短SHA-1哈希字串。

%cd

提交日期。

%T

樹對象的完整SHA-1哈希字串。

%an

做者的名字。

%t

樹對象的簡短SHA-1哈希字串。

%cn

提交者的姓名。

%P

父對象的完整SHA-1哈希字串。

%ce

提交者的電子郵件。

%p

父對象的簡短SHA-1哈希字串。

%H

提交對象的完整SHA-1哈希字串。

%ad

做者的修訂時間。

 

命令實踐

[root@gitlab git_data]# git log -2

commit 7e142db5e0100c7cd71a2663ed0926c552f3f59c

Author: wuhuang <xxxxxxxxxxx@163.com>

Date:   Wed Mar 21 09:24:57 2018 +0800

 

    wuhuang

 

commit f70785716ddd65e83dca6a2f4d8cea722ae61de2

Author: wuhuang <xxxxxxxxxxx@163.com>

Date:   Wed Mar 21 09:24:18 2018 +0800

 

    first commit

 

[root@gitlab git_data]# git log --pretty=oneline

7e142db5e0100c7cd71a2663ed0926c552f3f59c wuhuang

f70785716ddd65e83dca6a2f4d8cea722ae61de2 first commit

[root@gitlab git_data]# git log --pretty=fomat:"%h %cn"

fomat:7e142db wuhuang

fomat:f707857 wuhuang

2.4.8 還原歷史數據

 Git服務程序中有一個叫作HEAD的版本指針,當用戶申請還原數據時,其實就是將HEAD指針指向到某個特定的提交版本,可是由於Git是分佈式版本控制系統,爲了不歷史記錄衝突,故使用了SHA-1計算出十六進制的哈希字串來區分每一個提交版本,另外默認的HEAD版本指針會指向到最近的一次提交版本記錄,而上一個提交版本會叫HEAD^,上上一個版本則會叫作HEAD^^,固然通常會用HEAD~5來表示往上數第五個提交版本。

git reset --hard HEAD^         #→還原歷史提交版本上一次

git reset --hard 3de15d4        #→找到歷史還原點的SHA-1值後,就能夠還原(值不寫全,系統會自動匹配)

還原數據

[root@gitlab git_data]# git reset --hard f70785716

HEAD 如今位於 f707857 first commit

[root@gitlab git_data]# git log

commit f70785716ddd65e83dca6a2f4d8cea722ae61de2

Author: wuhuang <xxxxxxxxxxx@163.com>

Date:   Wed Mar 21 09:24:18 2018 +0800

 

    first commit

 

2.4.9 還原將來數據

什麼是將來數據?就是你還原到歷史數據了,可是你後悔了,想撤銷更改,可是git log已經找不到這個版本了。

git reflog                                    #→查看將來歷史更新點

 

[root@gitlab git_data]# git reflog 

f707857 HEAD@{0}: reset: moving to f70785716

4ce5110 HEAD@{1}: reset: moving to 4ce5110bf3

7e142db HEAD@{2}: commit: wuhuang

f707857 HEAD@{3}: commit: first commit

4ce5110 HEAD@{4}: commit (initial): first commit

2.4.10 標籤使用

前面回滾使用的是一串字符串,又長又難記。使用標籤就會方便不少。

git tag v1.0                     #→當前提交內容打一個標籤(方便快速回滾),每次提交均可以打個tag

git tag                         #→查看當前全部的標籤

git show v1.0                   #→查看當前1.0版本的詳細信息

git tag v1.2 -m "version 1.2 release is test"  #→建立帶有說明的標籤,-a指定標籤名字,-m指定說明文字

git tag -d v1.0                          #→咱們爲同一個提交版本設置了兩次標籤,刪除以前的v1.0

 

測試命令

[root@gitlab git_data]# git tag v2

[root@gitlab git_data]# git show v2 

commit f70785716ddd65e83dca6a2f4d8cea722ae61de2

Author: wuhuang <xxxxxxxxxxx@163.com>

Date:   Wed Mar 21 09:24:18 2018 +0800

 

    first commit

 

diff --git a/README b/README

index e69de29..190a180 100644

--- a/README

+++ b/README

@@ -0,0 +1 @@

+123

[root@gitlab git_data]# git reset --hard v2 

HEAD 如今位於 f707857 first commit

 

2.4.11 對比數據

git diff能夠對比當前文件與倉庫已保存文件的區別,知道了對README做了什麼修改

後,再把它提交到倉庫就放⼼多了。


git diff README

 

2.5 分支結構

在實際的項目開發中,儘可能保證master分支穩定,僅用於發佈新版本,平時不要隨便直接修改裏面的數據文件。

那在哪幹活呢?幹活都在dev分支上。每一個人從dev分支建立本身我的分支,開發完合併到dev分支,最後dev分支合併到master分支。因此團隊的合做分支看起來會像下圖那樣。

image.png 

2.5.1 建立分支

git branch linux           #→建立分支

git checkout linux          #→切換分支

git branch                #→查看當前分支狀況,當前分支前有*

 

[root@gitlab git_data]# git branch

* master

[root@gitlab git_data]# git branch linux

[root@gitlab git_data]# git branch 

  linux

* master

[root@gitlab git_data]# git checkout linux 

切換到分支 'linux'

[root@gitlab git_data]# git branch

* linux

  master

 

2.5.2 合併分支

想把Linux的工做成果合併到master分支上

先切換到master分支

git merge linux                 #→合併Linux分支至master

查看合併的文件

git branch -d linux               #→確認合併完成後,能夠放心地刪除Linux分支

 

2.5.3 分支衝突

同時修改masterLinux分支同一個文件並提交,最後merge

查看合併結果

模擬分支衝突

# master修改,提交

[root@gitlab git_data]# echo "master content" >>README

[root@gitlab git_data]#git commit -a -m "master content"

[master b52cc77] master content

 1 file changed, 1 insertion(+)

 

# 切換到linux分支修改提交

[root@gitlab git_data]# git checkout linux

切換到分支 'linux'

[root@gitlab git_data]# cat README

1

linux branch

[root@gitlab git_data]# echo "linux content" >>README

[root@gitlab git_data]# git commit -a -m "linux content"

[linux cb72c04] linux content

 1 file changed, 1 insertion(+)

 

# 回到master分支嘗試自動合併

[root@gitlab git_data]# git checkout master

切換到分支 'master'

[root@gitlab git_data]# git merge linux

自動合併 README

衝突(內容):合併衝突於 README

自動合併失敗,修正衝忽然後提交修正的結果。

 

解決衝突

[root@gitlab git_data]# vim README

1

linux branch

linux content

[root@gitlab git_data]# git commit -a -m "hebingshibai content"

[master 068b921] hebingshibai content

[root@gitlab git_data]# git log

 

2.5.4 刪除分支

由於以前已經合併了linux分支,因此如今看到它在列表中。 在這個列表中分支名字前沒有 * 號的分支一般可使用 git branch -d 刪除掉;你已經將它們的工做整合到了另外一個分支,因此並不會失去任何東西。

查看全部包含未合併工做的分支,能夠運行 git branch --no-merged

git branch --no-merged

  testing

這裏顯示了其餘分支。 由於它包含了還未合併的工做,嘗試使用 git branch -d 命令刪除它時會失敗:

git branch -d testing

error: The branch 'testing' is not fully merged.

If you are sure you want to delete it, run 'git branch -D testing'.

若是真的想要刪除分支並丟掉那些工做,如同幫助信息裏所指出的,可使用 -D 選項強制刪除它。

 

2.6 WindowsGit的使用

windows git軟件網站 https://git-for-windows.github.io

軟件下載地址:https://github.com/git-for-windows/git/releases/download/v2.15.1.windows.2/Git-2.15.1.2-64-bit.exe

軟件安裝默認便可。

2.6.1 軟件使用

建立新的倉庫

image.png 

定義倉庫的路徑

image.png 


添加用戶信息(在 git bash中)

 

default@Hzs-Desktop MINGW64 /i/git_data (master)

$ git config  --global user.email "wuhuang@xxxxxxxxxxx@163.com"

 

default@Hzs-Desktop MINGW64 /i/git_data (master)

$ git config  --global user.name "wuhuang"


git Gui 中添加用戶信息,添加一次就可

image.png 

 

在頁面中將數據配置好便可使用

 

image.png 

查看歷史數據

image.png 

第3章 GIT服務器

前面咱們已經知道Git人人都是中心,那他們怎麼交互數據呢?

使用GitHub或者碼雲等公共代碼倉庫

使用GitLab私有倉庫

3.1 私有倉庫GITLAB

官方安裝文檔   https://about.gitlab.com/installation/

國內軟件鏡像站 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/

3.1.1 安裝

機器內存給大點

yum -y localinstall gitlab-ce-9.1.4-ce.0.el7.x86_64.rpm

gitlab-ctl reconfigure               #→初始化,就執行一次

gitlab-ctl status

 

gitlab-ctl status/stop/start

經過瀏覽器訪問頁面10.0.0.63,設置初始密碼,其餘操做相似GitHUB

帳戶:root  密碼本身設置爲12345678(八位數便可)

 

3.1.2 使用瀏覽器訪問,進行web界面操做

第一次訪問,建立密碼

image.png 

進行登錄,用戶名爲root,密碼爲12345678

image.png 

建立一個新的項目

image.png 

定義項目的名稱

image.png 

 

建立完成後會提示沒有添加ssh密鑰

image.png 

image.png 

在服務器上建立ssh密鑰 使用ssh-ketgen 命令

[root@gitlab ~]# ssh-keygen

[root@gitlab ~]# cat /root/.ssh/id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCr+4fZv83jQQDCngjmuiJFw0H0nGHfACVuxgZLszqla4VFZIKOCyXzexhhHW+vH7Us03AXssL7gFxSZg68bz+shBXz2OhFulwisdIQqbWFqBuWAthSrKQlnWIFzM9lzXX/ffI6xYlHP7i8c+Nz3C0Irm7lnP3M5IJpYIuCDuKc0NSGjQpxpqMYkzNqGCkYCk+rB8I/aZv9u49iOCD6I0WkEpbL2hzoR7gUMi/Wyy6gKag1Cy3Omi7FS19dGofITmG6XlFDcRzRH9pz8eBzbzlKmX1GjsndEELCImHLKjmRmvopdF5J7b1wfWYcHfS+Z+SSx2rCeIF4zxzIfO+osnkD root@gitlab


將密鑰添加到web界面的用戶中

image.png 

3.1.3 gitlab自帶的命令集

Command line instructions

Git global setup

git config --global user.name "Administrator"

git config --global user.email "admin@example.com"

Create a new repository

git clone git@gitlab.example.com:root/clsn.git

cd clsn

touch README.md

git add README.md

git commit -m "add README"

git push -u origin master

Existing folder

cd existing_folder

git init

git remote add origin git@gitlab.example.com:root/clsn.git

git add .

git commit -m "Initial commit"

git push -u origin master

Existing Git repository

cd existing_repo

git remote rename origin old-origin

git remote add origin git@gitlab.example.com:root/clsn.git

git push -u origin --all

git push -u origin --tags

 

3.1.4 建立新的Git倉庫

[root@gitlab ~]# git clone git@10.0.0.63:root/wuhuang.git

正克隆到 'wuhuang'...

warning: 您彷佛克隆了一個空版本庫。

 

建立文件並推到遠端git倉庫

[root@gitlab ~]# cd wuhuang/

[root@gitlab wuhuang]# touch README.md

[root@gitlab wuhuang]# git add README.md

[root@gitlab wuhuang]# git commit -m "add README"

[master(根提交) 128444a] add README

 1 file changed, 0 insertions(+), 0 deletions(-)

 create mode 100644 README.md

 

[root@gitlab wuhuang]# git push -u origin master

Counting objects: 3, done.

Writing objects: 100% (3/3), 211 bytes | 0 bytes/s, done.

Total 3 (delta 0), reused 0 (delta 0)

To git@10.0.0.63:root/wuhuang.git

 * [new branch]      master -> master

分支 master 設置爲跟蹤來自 origin 的遠程分支 master

 

 

推送完成後可以在web界面中查看並添加內容

image.png 

拉取文件

[root@gitlab wuhuang]# git pull

remote: Counting objects: 3, done.

remote: Compressing objects: 100% (2/2), done.

remote: Total 3 (delta 0), reused 0 (delta 0)

Unpacking objects: 100% (3/3), done.

來自 10.0.0.63:root/wuhuang

   128444a..22c72d6  master     -> origin/master

更新 128444a..22c72d6

Fast-forward

 README.md | 9 +++++++++

 1 file changed, 9 insertions(+)

 

查看文件

[root@gitlab wuhuang]# cat README.md

# 1. 第一章 git

 

```html

git config --global user.name "wuhuang"                #配置git使用用戶

git config --global user.email "xxxxxxxxxxx@163.com"   #配置git使用郵箱

git config --global color.ui true                      #語法高亮

git config --list                                     #查看全局配置

```

 

開機自啓動gitlab

gitlab-ctl start           #→再次開機以後需從新啓動(在初始化以後gitlab自動啓動)

chmod +x /etc/rc.d/rc.local

echo 'gitlab-ctl start' >>/etc/rc.local    

相關文章
相關標籤/搜索