亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

Git分支管理——創建、合并、刪除分支

發布時間:2020-07-10 09:37:06 來源:網絡 閱讀:361 作者:warrent 欄目:系統運維

前言:

幾乎所有的版本控制都以某種形式支持分支。使用分支意味著你可以把你的工作從開發主線上分離開來,以免影響開發主線。

Git的分支模型成稱為它的“必殺技特性”,也正因為這一特性,使得Git從眾多版本控制系統中脫穎而出。Git處理分支的方式是難以置信的輕量,創建新的分支這一操作是秒級完成的,并且在不同分支之間的切換操作也是一樣便捷。

Git的分支,其實本質上僅僅是指向提交對象的可變指針。Git的默認分支是master。在多次提交操作之后,其實我們已經有一個指向最后那個提交對象的master分支。他會在每次的提交操作中自動向前移動。

實際工作中我們可能會遇到一個下面這個情況:

  • 開發某個網站。
  • 為實現某個新的需求,創建一個分支。
  • 在這個分支上開展工作。
  • 正在此時,你突然接到一個電話說有個很嚴重的問題需要緊急修補。 你將按照如下方式來處理:
  • 切換到你的線上分支(production branch)。
  • 為這個緊急任務新建一個分支,并在其中修復它。
  • 在測試通過之后,切換回線上分支,然后合并這個修補分支,最后將改動推送到線上分支。
  • 修改后切換回你最初工作的分支上,繼續工作。

關于git的更多介紹,還是移步其官方文檔吧!


博文大綱:
1、初始化一個目錄并聲明用戶及郵箱地址
2、創建、快速合并及刪除分支
3、解決分支沖突問題
4、關閉快速合并
5、Bug分支
6、Git分支管理相關命令

1、初始化一個目錄并聲明用戶及郵箱地址

[root@git ll]# git init
[root@git ll]# git config --global user.name admin
[root@git ll]# git config --global user.email admin@admin.com

2、創建、快速合并及刪除分支

[root@git ll]# echo "aaaa" > branch.txt
[root@git ll]# git add branch.txt
[root@git ll]# git commit -m "第一次提交 From master"
#創建一個分支并進入新建的分支
[root@git ll]# git checkout -b dev
[root@git ll]# git branch       #查看當前所在分支
* dev           #星號所在的列就是當前所在分支
  master
#在dev分支更新文件并提交
[root@git ll]# echo "bbbb" >> branch.txt 
[root@git ll]# git add *
[root@git ll]# git commit -m "commit From dev branch"
[root@git ll]# cat branch.txt      #確認當前內容
aaaa
bbbb
[root@git ll]# git checkout master       #切換到master分支
[root@git ll]# cat branch.txt       #確認當前內容
aaaa
[root@git ll]# git merge dev        #合并dev分支
[root@git ll]# cat branch.txt    #再次查看其內容
aaaa
bbbb
[root@git ll]# git log --graph --pretty=oneline --abbrev-commit   #查看提交日志
#可以查看到其提交日志前面的星號是在同列的,這是因為采用的是快速合并的方法(默認)
#稍后會寫下關閉快速合并,然后可以對比該命令查看的結果
* bc8bd7b commit From dev branch
* 8bb6874 第一次提交 From master
[root@git ll]# git branch -d dev       #刪除dev分支

3、解決分支沖突問題

在我們實際工作中會遇到一個分支沖突的問題,就是當你在工作分支dev下對文件內容進行了修改,然后在你提交到版本庫前,master分支下的內容已經發生了改變,此時,你dev分支下的內容是比master下的內容要舊,這種情況下進行分支合并,會有一個分支沖突的概念,栗子如下:

[root@git ll]# cat branch.txt      #查看master分支的此文件內容
aaaa
[root@git ll]# git checkout -b dev        #創建并切換至自己的工作分支
 #對文件內容進行修改并提交到版本庫
[root@git ll]# echo "bbbb" >> branch.txt   
[root@git ll]# git add branch.txt
[root@git ll]# git commit -m "alter from dev"
[root@git ll]# cat branch.txt     #查看文件內容
aaaa
bbbb
[root@git ll]# git checkout master     #切換至master
[root@git ll]# cat branch.txt      #master下的文件內容還是原來的
aaaa
#修改master下的文件內容并提交
[root@git ll]# echo "cccc" >> branch.txt 
[root@git ll]# git add branch.txt
[root@git ll]# git commit -m "alter from master"
[root@git ll]# cat branch.txt     #此時master下的文件內容如下
aaaa
cccc
#接下來將dev分支進行合并:
[root@git ll]# git merge dev        #返回如下報錯信息,說有沖突
自動合并 branch.txt
沖突(內容):合并沖突于 branch.txt
自動合并失敗,修正沖突然后提交修正的結果。

#解決合并沖突
#其實有上述報錯后,dev分支下的內容已經存在了master目錄下的文件中,只是沒有提交而已,提交即可
#但是工作中不建議直接提交,因為內容有些特殊的地方
[root@git ll]# vim branch.txt       #此時文件的內容如下

aaaa
<<<<<<< HEAD
cccc
=======
bbbb
>>>>>>> dev
[root@git ll]# cat branch.txt   #將沖突報錯產生的特殊符號刪除再提交
aaaa
cccc
bbbb
[root@git ll]# git add branch.txt
[root@git ll]# git commit -m "沖突已解決"
[root@git ll]# git log --graph --pretty=oneline --abbrev-commit   #查看分支合并情況
*   da2bcdb 沖突已解決
|\  
| * 6abac82 alter from dev
* | 2b5d2f0 alter from master
|/  
* ef014ec alter from master

4、關閉快速合并

在上面說到,在查看git版本的提交歷史時,其分支結構表現的不是那么直觀,那是因為默認開啟了快速合并的選項,這里寫下如何關閉快速合并。

#進入分支,修改文件內容,并提交
[root@git ll]# git checkout -b dev
[root@git ll]# echo "ffff" >> branch.txt 
[root@git ll]# git add branch.txt
[root@git ll]# git commit -m "關閉快速合并"
#切換至master分支,進行合并
[root@git ll]# git checkout master 
[root@git ll]# git merge --no-ff -m "分支合并說明" dev    #選項“--no--ff”就是關閉快速合并
[root@git ll]# git log --graph --pretty=oneline --abbrev-commit 
#再次查看提交日志,
*   38c4fad Merge branch 'dev'
|\  
| * 9233297 關閉快速合并
|/  
*   7e0ea1b 沖突已解決    #從這里開始向上看,可以看到是經過一個分支才提交的
|\  
| * f9180c9 alter from dev
* | 107081a alter from branch/bug
|/  
#以下是最初沒有關閉快速合并的分支合并操作,可以看到只有一列星號,而不顯示分支
* bc8bd7b commit From dev branch          
* 8bb6874 第一次提交 From master
[root@git ll]# git branch -d dev       #刪除dev分支

5、Bug分支

開發人員在開發過程中,bug就像家常便飯一樣,有了bug就要修復,在git中,由于分支是強大的,所以都可以通過一個新的臨時分支來修復bug,修復后,分支合并,然后將臨時分支刪除。

當我們接到一個修改bug的任務后,很自然的想要創建一個分支來修復它,但是當前正在進行的工作進行到一半,還無法提交,但又需要馬上修復bug,此時,可以通過git提供的stash功能,可以把當前工作區“儲藏”起來,等以后恢復現場后繼續工作。

工作進行到一半時工作區的狀態如下:
[root@git ll]# cat branch.txt 
aaaa
cccc
bbbb
[root@git ll]# echo "dddd" >> branch.txt 
[root@git ll]# git status     #提示修改但是尚未提交
# 位于分支 dev
# 尚未暫存以備提交的變更:
#   (使用 "git add <file>..." 更新要提交的內容)
#   (使用 "git checkout -- <file>..." 丟棄工作區的改動)
#
#   修改:      branch.txt
#
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
將此時的工作區隱藏起來
[root@git ll]# git stash        #就是這條命令,可以將當前工作區隱藏
[root@git ll]# git status        #再次查看當前工作區,就是干凈的了
# 位于分支 dev
無文件要提交,干凈的工作區
[root@git ll]# cat branch.txt       #文件也沒有我們新加的內容
aaaa
cccc
bbbb
假設在master分支上修復bug
#切換至master分支并進入bug分支修改
[root@git ll]# git checkout master 
[root@git ll]# git checkout -b bug
[root@git ll]# echo "eeee" >> branch.txt 
[root@git ll]# git add branch.txt
[root@git ll]# git commit -m "alter from bug"
#切換至master分支合并修改后的bug分支
[root@git ll]# git checkout master 
[root@git ll]# git merge bug 
[root@git ll]# cat branch.txt       #合并后的文件內容如下
aaaa
cccc
bbbb
eeee
[root@git ll]# git branch -d bug      #刪除bug分支
#回到dev分支恢復之前修改的內容繼續自己的工作
#有兩種恢復方法:
#一是使用 git stash apply 恢復,但是恢復后,stash 內容并不刪除,需要用 git stash drop 來刪除;
#另一種方式是用 git stash pop,恢復的同時把 stash 內容也刪了;這里我采用第二種方法
[root@git ll]# git stash pop        #恢復存儲區的內容
[root@git ll]# cat branch.txt     #我們之前的內容又回來了
aaaa
cccc
bbbb
dddd
#最后工作完成,在合并dev分支的時候,也會有分支沖突,可以參考前面解決分支沖突的方法

6、Git分支管理相關命令

[root@git ll]# git checkout -b ops    #創建ops分支并切換到ops分支
[root@git ll]# git checkout master     #切換至master分支
[root@git ll]# git merge dev     #快速合并dev分區到當前分支
[root@git ll]# git branch -d ui       #刪除ui分支
[root@git ll]# git branch        #查看所在分支(用星號表示所在分支)
[root@git ll]# git log --graph --pretty=oneline --abbrev-commit 
#查看分支合并圖
[root@git ll]# git merge --no-ff -m "合并時提交信息" dev   #不使用快速合并分支
[root@git ll]# git stash        #將當前版本庫的狀態臨時存儲
[root@git ll]# git stash pop   #恢復并刪除臨時存儲的信息
[root@git ll]# git stash apply    #恢復臨時存儲信息,但不刪除信息
[root@git ll]# git stash drop     #刪除臨時存儲中的信息
[root@git ll]# git stash show     #查看臨時存儲的信息
[root@git ll]# git branch -D dev       #強制刪除一個分支
[root@git ll]# git remote       #查看當前版本庫是否屬于遠程版本庫
[root@git ll]# git remote -v    #查看遠程版本庫的詳細信息
[root@git ll]# git push origin dev     #將本地dev分支推送到遠程倉庫
[root@git ll]# git checkout -b dev origin/dev   #創建本地dev分支并關聯到遠程倉庫的dev分支
[root@git ll]# git pull    #抓取遠程分支,一般用于解決沖突
[root@git ll]# git branch --set-upstream-to=origin/dev dev   #將本地分支dev關聯到遠程倉庫的dev分支
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

辛集市| 阿巴嘎旗| 柳江县| 海阳市| 塔河县| 甘肃省| 莱芜市| 北辰区| 齐河县| 陇川县| 土默特右旗| 贵南县| 青阳县| 郑州市| 孙吴县| 信丰县| 元谋县| 宁明县| 加查县| 洛南县| 从江县| 玉门市| 旬阳县| 静宁县| 济阳县| 平和县| 铁力市| 清水县| 鄂州市| 海淀区| 盈江县| 怀宁县| 梅河口市| 神木县| 新建县| 娱乐| 沈丘县| 东乡族自治县| 班玛县| 巴彦淖尔市| 昔阳县|