溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Gitlab部署與應(yīng)用

發(fā)布時間:2020-07-22 15:21:09 來源:網(wǎng)絡(luò) 閱讀:402 作者:mb5cd21e691f31a 欄目:云計算

Gitlab部署與應(yīng)用

[root@localhost ~]# mkdir xgp 
[root@localhost ~]# cd xgp/
[root@localhost xgp]# git init 
初始化空的 Git 版本庫于 /root/xgp/.git/
[root@localhost xgp]# vim xgp.txt
[root@localhost xgp]# cat xgp.txt 
111master
[root@localhost xgp]# git add  xgp.txt
[root@localhost xgp]# git commit -m "第一次提交從master分支"
[master(根提交) b211b8e] 第一次提交從master分支
 1 file changed, 1 insertion(+)
 create mode 100644 xgp.txt

首先,我們創(chuàng)建 dev 分支,然后切換到 dev 分支:
[root@localhost xgp]# git checkout -b dev
切換到一個新分支 'dev'

Gitlab部署與應(yīng)用
git checkout 命令加上-b 參數(shù)表示創(chuàng)建并切換,相當(dāng)于以下兩條命令:
$ git branch dev
$ git checkout dev
Switched to branch 'dev'

然后,用 git branch 命令查看當(dāng)前分支:
[root@localhost xgp]# git branch

  • dev
    Master
    Gitlab部署與應(yīng)用

git branch 命令會列出所有分支,當(dāng)前分支前面會標(biāo)一個*號。

然后,我們就可以在 dev 分支上正常提交,比如對 xgp.txt 做個修改,加上一行:
[root@localhost xgp]# cat xgp.txt
111master
Qqqqdve 添加的

然后提交:

[root@localhost xgp]# git add xgp.txt
[root@localhost xgp]# git commit  -m "第一次dev"
[dev eac3426] 第一次dev
 1 file changed, 1 insertion(+)

現(xiàn)在, dev 分支的工作完成,我們就可以切換回 master 分支:
[root@localhost xgp]# git checkout master
切換到分支 'master'
Gitlab部署與應(yīng)用
切換回 master 分支后,再查看一個 xgp.txt 文件,剛才添加的內(nèi)容不見了!因?yàn)槟莻€提交是在 dev 分支上,而 master分支此刻的提交點(diǎn)并沒有變:
[root@localhost xgp]# cat xgp.txt
111master

現(xiàn)在,我們把 dev 分支的工作成果合并到 master 分支上:

[root@localhost xgp]# git merge dev 
更新 b211b8e..eac3426
Fast-forward
 xgp.txt | 1 +
 1 file changed, 1 insertion(+)

git merge 命令用于合并指定分支到當(dāng)前分支。合并后,再查看 xgp.txt 的內(nèi)容,就可以看到,和 dev 分支的最新提交是完全一樣的。
注意到上面的 Fast-forward 信息, Git 告訴我們,這次合并是“快進(jìn)模式”,也就是直接把 master 指向 dev 的當(dāng)前提交,所以合并速度非常快。
當(dāng)然,也不是每次合并都能 Fast-forward,我們后面會講其他方式的合并。
合并完成后,就可以放心地刪除 dev 分支了:

查看一下

[root@localhost xgp]# git log 
commit eac342633a72b3590a019e4d758f4a60707acda2
Author: admin <admin@admin>
Date:   Thu Nov 14 09:18:47 2019 +0800

    第一次dev

commit b211b8ef636e987166fb4a056fb778020f6518ae
Author: admin <admin@admin>
Date:   Thu Nov 14 09:12:11 2019 +0800

    第一次提交從master分支

刪除dev分支
[root@localhost xgp]# git branch -d dev 
已刪除分支 dev(曾為 eac3426)。

刪除后,查看 branch,就只剩下 master 分支了:
[root@localhost xgp]# git branch 
* master

因?yàn)閯?chuàng)建、合并和刪除分支非???,所以 Git 鼓勵你使用分支完成某個任務(wù),合并后再刪掉分支,這和直接在 master
分支上工作效果是一樣的,但過程更安全。
小結(jié)
Git 鼓勵大量使用分支:
查看分支: git branch
創(chuàng)建分支: git branch <name>
切換分支: git checkout <name>
創(chuàng)建+切換分支: git checkout -b <name>
合并某分支到當(dāng)前分支: git merge <name>
刪除分支: git branch -d <name>

解決沖突
人生不如意之事十之八九,合并分支往往也不是一帆風(fēng)順的。
準(zhǔn)備新的 xgp 分支,繼續(xù)我們的新分支開發(fā):

[root@localhost xgp]# git checkout  -b xgp
切換到一個新分支 'xgp'
修改 xgp.txt 最后一行,改為:
[root@localhost xgp]# cat xgp.txt 
111master
qqqqdve
沖突    添加
在 xgp分支上提交:
[root@localhost xgp]# git add xgp.txt
[root@localhost xgp]# git commit -m "xgp 沖突"
[xgp 9a92c8f] xgp 沖突
 1 file changed, 1 insertion(+)

切換到 master 分支:
[root@localhost xgp]# git checkout  master 
切換到分支 'master'
[root@localhost xgp]# cat xgp.txt 
111master
Qqqqdve

在 master 分支上把 xgp.txt 文件的最后一行改為:
[root@localhost xgp]# cat xgp.txt 
111master
qqqqdve
bug沖突   添加

提交:
[root@localhost xgp]# git add xgp.txt
[root@localhost xgp]# git commit -m "1 提交 沖突"
[master 43f4ad7] 1 提交 沖突
 1 file changed, 1 insertion(+)

現(xiàn)在, master 分支和 xgp 分支各自都分別有新的提交,變成了這樣:
Gitlab部署與應(yīng)用
這種情況下, Git 無法執(zhí)行“快速合并”,只能試圖把各自的修改合并起來,但這種合并就可能會有沖突,我們試試看:
[root@localhost xgp]# git merge xgp
自動合并 xgp.txt
沖突(內(nèi)容):合并沖突于 xgp.txt
自動合并失敗,修正沖突然后提交修正的結(jié)果。

果然沖突了! Git 告訴我們, xgp.txt 文件存在沖突,必須手動解決沖突后再提交。 git status 也可以告訴我們沖突的文件:

[root@localhost xgp]# git  status 
# 位于分支 master
# 您有尚未合并的路徑。
#   (解決沖突并運(yùn)行 "git commit")
#
# 未合并的路徑:
#   (使用 "git add <file>..." 標(biāo)記解決方案)
#
#   雙方修改:     xgp.txt
#
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

我們可以直接查看 xgp.txt 的內(nèi)容:
[root@localhost xgp]# cat xgp.txt 
111master
qqqqdve
<<<<<<< HEAD    #刪除
bug沖突
=======   #刪除
沖突
-----------xgp    #刪除

再提交:
[root@localhost xgp]# vim xgp.txt 
[root@localhost xgp]# git add xgp.txt
[root@localhost xgp]# git commit -m "解決沖突"
[master 8a29ce6] 解決沖突

現(xiàn)在, master 分支和xgp分支變成了下圖所示:

Gitlab部署與應(yīng)用

用帶參數(shù)的 git log 也可以看到分支的合并情況
[root@localhost xgp]# git log --graph --pretty=oneline --abbrev-commit

  • 8a29ce6 解決沖突
    |\
    | * 9a92c8f xgp 沖突
  • | 43f4ad7 1 提交 沖突
    |/ ``
  • eac3426 第一次dev
  • b211b8e 第一次提交從master分支

[root@localhost xgp]# cat xgp.txt
111master
qqqqdve
bug沖突
沖突

最后,刪除 xgp 分支:

[root@localhost xgp]# git branch -d xgp 
已刪除分支 xgp(曾為 9a92c8f)。

工作完成。
小結(jié)
當(dāng) Git 無法自動合并分支時,就必須首先解決沖突。解決沖突后,再提交,合并完成。
用 git log --graph 命令可以看到分支合并圖。

分支管理策略
通常,合并分支時,如果可能, Git 會用 Fast forward 模式,但這種模式下,刪除分支后,會丟掉分支信息。如果要強(qiáng)制禁用 Fast forward 模式, Git 就會在 merge 時生成一個新的 commit,這樣,從分支歷史上就可以看出分
支信息。
下面我們實(shí)戰(zhàn)一下--no-ff 方式的 git merge:
首先,仍然創(chuàng)建并切換 dev 分支:

[root@localhost xgp]#  git checkout  -b dev
切換到一個新分支 'dev'

修改 readme.txt 文件,并提交一個新的 commit:
[root@localhost xgp]# cat xgp.txt 
111master
qqqqdve
bug沖突
沖突
強(qiáng)制禁用 Fast forward  #添加

[root@localhost xgp]# git add  xgp.txt   # 提交到緩存
[root@localhost xgp]# git commit -m "強(qiáng)制禁用 Fast forward "   #提交到版本庫
[dev ea40f66] 強(qiáng)制禁用 Fast forward
 1 file changed, 1 insertion(+)

現(xiàn)在,我們切換回 master:

[root@localhost xgp]# git checkout master
切換到分支 'master'

準(zhǔn)備合并 dev 分支,請注意--no-ff 參數(shù),表示禁用 Fast forward:
[root@localhost xgp]# git merge --no-ff -m "merge with no-ff" dev
Merge made by the 'recursive' strategy.
 xgp.txt | 1 +
 1 file changed, 1 insertion(+)

因?yàn)楸敬魏喜⒁獎?chuàng)建一個新的 commit,所以加上-m 參數(shù),把 commit 描述寫進(jìn)去。
合并后,我們用 git log 看看分支歷史:

[root@localhost xgp]# git log --graph --pretty=oneline --abbrev-commit
*   50623ba merge with no-ff
|\  
| * ea40f66 強(qiáng)制禁用 Fast forward
|/  
*   8a29ce6 解決沖突
|\  
| * 9a92c8f xgp 沖突
* | 43f4ad7 1 提交 沖突
|/  
* eac3426 第一次dev
* b211b8e 第一次提交從master分支

可以看到,不使用 Fast forward 模式, merge 后就像這樣:
Gitlab部署與應(yīng)用

Bug 分支
軟件開發(fā)中, bug 就像家常便飯一樣。有了 bug 就需要修復(fù),在 Git 中,由于分支是如此的強(qiáng)大,所以,每個 bug都可以通過一個新的臨時分支來修復(fù),修復(fù)后,合并分支,然后將臨時分支刪除。當(dāng)你接到一個修復(fù)一個代號 101 的 bug 的任務(wù)時,很自然地,你想創(chuàng)建一個分支 issue-101 來修復(fù)它,但是,等等,當(dāng)前正在 dev 上進(jìn)行的工作還沒有提交:

并不是你不想提交,而是工作只進(jìn)行到一半,還沒法提交,預(yù)計完成還需 1 天時間。但是,必須在兩個小時內(nèi)修復(fù)該
bug,怎么辦?
幸好, Git 還提供了一個 stash 功能,可以把當(dāng)前工作現(xiàn)場“儲藏”起來,等以后恢復(fù)現(xiàn)場后繼續(xù)工作:

制作一個測試文件

[root@localhost xgp]# vim xgp.txt
[root@localhost xgp]# cat xgp.txt 
111master
qqqqdve
bug沖突
沖突
強(qiáng)制禁用 Fast forward
測試存儲區(qū) #添加
[root@localhost xgp]# vim xxx.txt
[root@localhost xgp]# git add  xgp.txt  xxx.txt
[root@localhost xgp]# git status 
位于分支 dev
 要提交的變更:
   (使用 "git reset HEAD <file>..." 撤出暫存區(qū))

修改:      xgp.txt

 未跟蹤的文件:
   (使用 "git add <file>..." 以包含要提交的內(nèi)容)

    xxx.txt 
[root@localhost xgp]# git stash 
Saved working directory and index state WIP on dev: ea40f66 強(qiáng)制禁用 Fast forward  HEAD 現(xiàn)在位于 ea40f66強(qiáng)制禁用 Fast forward
[root@localhost xgp]# git status 
# 位于分支 master
無文件要提交,干凈的工作區(qū)

現(xiàn)在,用 git status 查看工作區(qū),就是干凈的(除非有沒有被 Git 管理的文件),因此可以放心地創(chuàng)建分支來修復(fù)bug。
首先確定要在哪個分支上修復(fù) bug,假定需要在 master 分支上修復(fù),就從 master 創(chuàng)建臨時分支:
[root@localhost xgp]# git checkout dev
切換到分支 'dev'
現(xiàn)在修復(fù) bug,需要把“Git is free software ...”改為“Git is a free software ...”, 然后用 git stash pop,恢復(fù)的同時把 stash 內(nèi)容也刪了:
先查看一下

[root@localhost xgp]# git stash  list
stash@{0}: WIP on master: 88eeb08 提交
[root@localhost xgp]# git stash  show
 xgp.txt | 1 +
 xxx.txt | 1 +
 2 files changed, 2 insertions(+)
     恢復(fù)
[root@localhost xgp]# git stash  pop 
位于分支 dev
 要提交的變更:
   (使用 "git reset HEAD <file>..." 撤出暫存區(qū))

    新文件:    xxx.txt

 尚未暫存以備提交的變更:
   (使用 "git add <file>..." 更新要提交的內(nèi)容)
   (使用 "git checkout -- <file>..." 丟棄工作區(qū)的改動)

    修改:      xgp.txt

丟棄了 refs/stash@{0} (f5b7fdc796da9978e268083f6985ed5ba28ec373)

[root@localhost xgp]# git status 
位于分支 dev
要提交的變更:
   (使用 "git reset HEAD <file>..." 撤出暫存區(qū))

    新文件:    xxx.txt

 尚未暫存以備提交的變更:
   (使用 "git add <file>..." 更新要提交的內(nèi)容)
  (使用 "git checkout -- <file>..." 丟棄工作區(qū)的改動)

修改:      xgp.txt

[root@localhost xgp]# git commit  -m "測試存儲區(qū) master提交暫存區(qū) devtij交版本"
[dev 1256166] 測試存儲區(qū) master提交暫存區(qū) devtij交版本
 1 file changed, 1 insertion(+)
 create mode 100644 xxx.txt

[root@localhost xgp]# git status 
 位于分支 dev
尚未暫存以備提交的變更:
   (使用 "git add <file>..." 更新要提交的內(nèi)容)
   (使用 "git checkout -- <file>..." 丟棄工作區(qū)的改動)

    修改:      xgp.txt

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")   #需要提交

[root@localhost xgp]# git add *      #提交

查看一下
[root@localhost xgp]# ls
xgp.txt xxx.txt #可以看到已經(jīng)恢復(fù)成功

切換到master分支合并分支
[root@localhost xgp]# git merge dev
更新 88eeb08..a1a9698
Fast-forward
xgp.txt | 1 +
xxx.txt | 1 +
2 files changed, 2 insertions(+)
create mode 100644 xxx.txt

小結(jié)
修復(fù) bug 時,我們會通過創(chuàng)建新的 bug 分支進(jìn)行修復(fù),然后合并,最后刪除;
當(dāng)手頭工作沒有完成時,先把工作現(xiàn)場 git stash 一下,然后去修復(fù) bug,修復(fù)后,再 git stash pop,回到工作現(xiàn)場。

Feature 分支
軟件開發(fā)中,總有無窮無盡的新的功能要不斷添加進(jìn)來。
添加一個新功能時,你肯定不希望因?yàn)橐恍?shí)驗(yàn)性質(zhì)的代碼,把主分支搞亂了,所以,每添加一個新功能,最好新建
一個 feature 分支,在上面開發(fā),完成后,合并,最后,刪除該 feature 分支。
現(xiàn)在,你終于接到了一個新任務(wù):開發(fā)代號為 Vulcan 的新功能,該功能計劃用于下一代星際飛船。
于是準(zhǔn)備開發(fā):

[root@localhost xgp]# git checkout dev 
A   xx.txt
切換到分支 'dev'
[root@localhost xgp]# git checkout dev 
A   xx.txt
切換到分支 'dev'
[root@localhost xgp]# vim xgp.txt 
[root@localhost xgp]# vim xx.txt 
[root@localhost xgp]# git add  *
[root@localhost xgp]# git stash 
Saved working directory and index state WIP on dev: a1a9698 存儲qu
HEAD 現(xiàn)在位于 a1a9698 存儲qu
[root@localhost xgp]# git status 
# 位于分支 dev
無文件要提交,干凈的工作區(qū)
[root@localhost xgp]# git stash apply 
 位于分支 dev
 要提交的變更:
   (使用 "git reset HEAD <file>..." 撤出暫存區(qū))

    新文件:    xx.txt

 尚未暫存以備提交的變更:
   (使用 "git add <file>..." 更新要提交的內(nèi)容)
  (使用 "git checkout -- <file>..." 丟棄工作區(qū)的改動)

    修改:      xgp.txt

[root@localhost xgp]# git stash list 
stash@{0}: WIP on dev: a1a9698 存儲qu
[root@localhost xgp]# git stash drop 
丟棄了 refs/stash@{0} (0ab463ebbc4ee7f3a19cd8cadafd9ebe7b390aa9)

5 分鐘后,開發(fā)完畢:

[root@localhost xgp]# git commit  -m "強(qiáng)制刪除分支"
[dev 81d2812] 強(qiáng)制刪除分支
 1 file changed, 2 insertions(+)
 create mode 100644 xx.txt

切回 dev,準(zhǔn)備合并:

[root@localhost xgp]# git checkout  master 
M   xgp.txt
切換到分支 'master'
[root@localhost xgp]# git branch  -d dev 
error: 分支 'dev' 沒有完全合并。
如果您確認(rèn)要刪除它,執(zhí)行 'git branch -D dev'。
強(qiáng)制刪除
[root@localhost xgp]# git branch -D dev
已刪除分支 dev(曾為 81d2812)。

多人協(xié)作
推送分支
推送分支,就是把該分支上的所有本地提交推送到遠(yuǎn)程庫。推送時,要指定本地分支,這樣, Git 就會把該分支推送
到遠(yuǎn)程庫對應(yīng)的遠(yuǎn)程分支上:
瀏覽器登陸github換個密鑰
Gitlab部署與應(yīng)用
Gitlab部署與應(yīng)用
[root@localhost ~]# ssh-keygen -t rsa -C “2877364346@qq.com“ #linux生成密鑰
然后把密鑰放在githup放置密鑰的地方
Gitlab部署與應(yīng)用
把剛剛復(fù)制的到Linux里克隆到根目錄和xgp目錄
Gitlab部署與應(yīng)用
Gitlab部署與應(yīng)用

  302  cd
  303  ssh-keygen -t rsa -C "2877364346@qq.com"
  304  cat /root/.ssh/id_rsa.pub 
  305  git clone git@github.com:xgp666/xgp.git
  306  git clone git@github.com:xgp666/test.git
  307  cd xgp/
  308  git clone git@github.com:xgp666/test.git
  309  cd test/
  310  git checkout -b dev
  311  vim index.html
  312  ls
  313  git add index.html
  314  git commit -m "from /xgp"
  315  git push origin dev

瀏覽器查看一下
Gitlab部署與應(yīng)用

刪除遠(yuǎn)程分支
[root@localhost test]# git branch -d dev
error: 無法刪除您當(dāng)前所在的分支 'dev'。
[root@localhost test]# git branch -r -d origin/dev
已刪除遠(yuǎn)程分支 origin/dev(曾為 63aeb0a)。
[root@localhost test]# git push origin :dev
To git@github.com:xgp666/test.git

  • [deleted] dev
    Gitlab部署與應(yīng)用
    刪除庫

    Gitlab部署與應(yīng)用
    Gitlab部署與應(yīng)用
    Gitlab部署與應(yīng)用
    持續(xù)集成之 Gitlab 安裝
    Gitlab部署與應(yīng)用
    rpm -ivh gitlab-ce-11.9.8-ce.0.el6.x86_64.rpm #安裝

  1. 配置啟動 gitlab
    gitlab-ctl reconfigure
  2. 查看端口
    Gitlab部署與應(yīng)用
  3. 瀏覽器登陸
    Gitlab部署與應(yīng)用

Gitlab部署與應(yīng)用

Gitlab部署與應(yīng)用

創(chuàng)建項目

Gitlab部署與應(yīng)用

Gitlab部署與應(yīng)用

克隆項目到本地
項目路徑:
Gitlab部署與應(yīng)用
Linux克隆項目
git clone git@192.168.1.30:root/xgp-demo.git
Gitlab部署與應(yīng)用


336  git clone  git@192.168.1.30:root/xgp-demo.git
  337  cd xgp-demo/
  338  vim xgp.txt
  339  git add  xgp.txt
  340  git commit -m "test"
  341  git push  origin master

修改git配置文件

vim  /etc/gitlab/gitlab.rb  修改
external_url 'http://192.168.1.30'  #13
初始化一下,重啟一下
gitlab-ctl  reconfigure
gitlab-ctl  restart

瀏覽器查看,時間比較長

Gitlab部署與應(yīng)用
Gitlab部署與應(yīng)用

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI