溫馨提示×

溫馨提示×

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

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

Git之分支管理的示例分析

發(fā)布時間:2021-04-01 09:51:25 來源:億速云 閱讀:165 作者:小新 欄目:軟件技術(shù)

這篇文章主要介紹Git之分支管理的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

分支是Git的一個殺手級應(yīng)用,和其他版本控制工具不一樣的是,git創(chuàng)建及切換分支的效率極其高效。

分支簡介

何為分支呢?我們從一個我們非常熟悉的場景來講述,一個已經(jīng)上線的產(chǎn)品,現(xiàn)在需要新增一個功能。這個時候,如果我們在原分支上繼續(xù)開發(fā)的話,就很不方便,因為是一個已經(jīng)上線的應(yīng)用了,肯定需要先測試完畢后才能夠上線。一般我們的做法是,建立一個新的分支,在這個新的分支上開發(fā)新的功能,測試完畢后,再合并到主分支上。

分支的創(chuàng)建、切換

目前我的版本庫分支情況如下:

Git之分支管理的示例分析

創(chuàng)建分支

現(xiàn)在我們創(chuàng)建一個新的分支,dev。創(chuàng)建分支的及查看分支命令如下:

git branch 分支名
git branch

# git branch dev
# git branch
  dev
* master

切換分支

分支已經(jīng)建立成功了。現(xiàn)在我們來切換到新的分支,切換分支的命令如下git checkout 分支名

# git checkout dev
Switched to branch 'dev'

Git之分支管理的示例分析

現(xiàn)在,我們在新的分支做一些修改,然后提交,然后切換到master分支上做點修改并提交。然后,我們看看分支的狀態(tài)。

git vim config.php # 修改config.php文件
git add . && git commit -m 'add config.php'

git checkout master # 切換到主分支
git vim config.php
git add . && git commit -m 'change config.php'

Git之分支管理的示例分析

$ git log --oneline --decorate --graph --all
* ca4589c (HEAD -> master) add config file
| * 43a5a8f (dev) add config.php
|/
* 19e3186 add index.php
* 9cc82f9 first commit

一條命令完成分支的創(chuàng)建及切換分支

git checkout -b 新分支名

分支的合并

首先引入一個場景,該場景非常的常見:

  • 一個系統(tǒng)已經(jīng)上線

  • 該系統(tǒng)需要更新一個新的功能,所以你新建了一個分支(dev)并在此分支上開展工作。

  • 此時,系統(tǒng)突然出現(xiàn)的一個問題,需要緊急排查處理。

  • 那么,這時候你需要先切換到線上版本(master),然后新建立一個分支(fixbug),在新的分支上修正錯誤

  • 完成測試后,切換到線上分支,然后來合并fixbug分支,再將改動推到線上的分支。

  • 最后,我們就可以切換到dev分支來繼續(xù)工作了。

目前,我們版本庫狀態(tài)如下:

Git之分支管理的示例分析

現(xiàn)在,需要新建一個新分支,在新分支上添加新的功能。

git checkout -b dev

然后在新的分支上做一些修改。

Git之分支管理的示例分析

此時,發(fā)現(xiàn)線上出現(xiàn)了一個嚴重的bug,需要緊急處理。那么,首先我需要切換到master分支。但在切換的時候發(fā)生了一個錯誤

$ git checkout master
error: Your local changes to the following files would be overwritten by checkout:
        login.php
Please commit your changes or stash them before you switch branches.
Aborting

以上錯誤我們經(jīng)常會碰到,這是因為在合并分支的時候,工作區(qū)和暫存區(qū)必須是“干凈”的。有兩種方法可以達到上述要求

  • 提交修改

  • 暫存

我們這里使用暫存的方法來演示

$ git stash
$ git checkout master
Switched to branch 'master'

當(dāng)你切換分支的時候,Git 會重置你的工作目錄,使其看起來像回到了你在那個分支上最后一次提交的樣子。

現(xiàn)在,我們新建fixbug分支,在這個分支上修復(fù)bug。

$ git checkout -b fixbug

合并分支

修復(fù)完成且測試通過時,就可以把它合并到master上了。合并使用git  merge 分支名

$ git checkout master Switched to branch 'master' 
$ git merge fixbug

刪除分支

這個時候,fixbug功能已經(jīng)完成了,可以將它給刪除掉了。

$ git branch -d fixbug 
Deleted branch fixbug (was cca73bb).

現(xiàn)在,我們可以繼續(xù)在dev分支上工作了。我們需要把之前暫存的內(nèi)容取出來。

$ git checkout dev

$ git stash pop
On branch dev
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   login.php

no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (2f8476defbaa813e31f3e1b081f5b88416b2ff50)

新功能完成后,提交到版本庫。

Git之分支管理的示例分析

沖突解決

現(xiàn)在我們新的功能完成了,那么就可以把它合并到master分支上了?,F(xiàn)在我們來演示合并時遇到?jīng)_突時,如何去解決。

$ git checkout master
Switched to branch 'master'

$ git merge dev
Auto-merging index.php
CONFLICT (content): Merge conflict in index.php
Automatic merge failed; fix conflicts and then commit the result.

提示我index.php合并的時候有沖突,我們來看看該文件

$ cat index.php
<?php

<<<<<<< HEAD
echo 'hello world';
=======
echo 'version 1.1 finished';
>>>>>>> dev

$ cat index.php 
<?php 
echo 'version 1.1 finished';

然后再add并提交,最后在提交

$ git commit -m 'merge dev'

這個時候就合并成功了,現(xiàn)在就去刪除dev分支吧。

$ git branch -d dev

以上是“Git之分支管理的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

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

git
AI