搜尋
首頁開發工具Git版本控制工具Git-分支管理

分支是Git的一個殺手級應用,和其他版本控制工具不一樣的是,git創建及切換分支的效率極為有效率。

分支簡介

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

分支的建立、切換

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

版本控制工具Git-分支管理

建立分支

現在我們建立一個新的分支,dev。建立分支的及檢視分支指令如下:

git branch 分支名
git branch

# git branch dev
# git branch
  dev
* master

#切換分支

分支已經建立成功了。現在我們來切換到新的分支,切換分支的命令如下git checkout 分支名

# git checkout dev
Switched to branch 'dev'

版本控制工具Git-分支管理

#現在,我們在新的分支做一些修改,然後提交,然後切換到master分支做點修改提交。然後,我們來看看分支的狀態。

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

一條指令完成分支的建立與切換分支

git checkout -b 新分支名

分支的合併

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

  • 一個系統已經上線

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

  • 此時,系統突然出現的一個問題,需要緊急排查處理。

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

  • 完成測試後,切換到線上分支,然後來合併fixbug分支,再將改變推到線上的分支。

  • 最後,我們就可以切換到dev分支來繼續運作了。

目前,我們版本庫狀態如下:

版本控制工具Git-分支管理

#現在,需要新新分支,在新分支上新增新的功能。

git checkout -b dev

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

版本控制工具Git-分支管理

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

$ 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

以上錯誤我們常常會碰到,這是因為在合併分支的時候,工作區和暫存區必須是「乾淨」的。有兩種方法可以達到上述要求

  • 提交修改

  • #暫存

##我們這裡使用暫存的方法來示範

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

当你切换分支的时候,Git 会重置你的工作目录,使其看起来像回到了你在那个分支上最后一次提交的样子。

现在,我们新建fixbug分支,在这个分支上修复bug。

$ git checkout -b fixbug

合并分支

修复完成且测试通过时,就可以把它合并到master上了。合并使用git  merge 分支名

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

删除分支

这个时候,fixbug功能已经完成了,可以将它给删除掉了。

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

现在,我们可以继续在dev分支上工作了。我们需要把之前暂存的内容取出来。

$ 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-分支管理

冲突解决

现在我们新的功能完成了,那么就可以把它合并到master分支上了。现在我们来演示合并时遇到冲突时,如何去解决。

$ git checkout master
Switched to branch &#39;master&#39;

$ 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 &#39;hello world&#39;;
=======
echo &#39;version 1.1 finished&#39;;
>>>>>>> dev
<br/>
$ cat index.php 
<?php 
echo &#39;version 1.1 finished&#39;;

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

$ git commit -m &#39;merge dev&#39;

这个时候就合并成功了,现在就去删除dev分支吧。

$ git branch -d dev

以上是版本控制工具Git-分支管理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
GitHub:開發人員和項目的平台GitHub:開發人員和項目的平台Apr 13, 2025 am 12:01 AM

GitHub的核心功能包括版本控制、分支管理、代碼審查、問題跟踪和項目管理。 1.版本控制與分支管理基於Git,允許追踪代碼變更和實驗性開發。 2.代碼審查通過PullRequest實現,提升代碼質量和團隊協作。 3.問題跟踪與項目管理通過Issues和項目管理板進行,提高項目透明度和可追踪性。

行動中的github:示例和用例行動中的github:示例和用例Apr 12, 2025 am 12:16 AM

GitHub是提升軟件開發效率和質量的強大工具。 1)版本控制:通過Git管理代碼變更。 2)PullRequests:進行代碼審查,提高代碼質量。 3)Issues:跟踪bug和項目進度。 4)GitHubActions:自動化構建、測試和部署流程。

git vs. github:版本控制和代碼託管git vs. github:版本控制和代碼託管Apr 11, 2025 am 11:33 AM

Git是版本控制系統,GitHub是基於Git的代碼託管平台。 Git用於管理代碼版本,支持本地操作;GitHub提供在線協作工具,如Issue跟踪和PullRequest。

什麼是簡單的話?什麼是簡單的話?Apr 09, 2025 am 12:12 AM

Git是一個開源的分佈式版本控制系統,幫助開發者跟踪文件變化、協同工作和管理代碼版本。它的核心功能包括:1)記錄代碼修改,2)回退到之前版本,3)協同開發,4)創建和管理分支進行並行開發。

git和github相同嗎?git和github相同嗎?Apr 08, 2025 am 12:13 AM

Git和GitHub不是同一回事。 Git是版本控制系統,GitHub是基於Git的代碼託管平台。 Git用於管理代碼版本,GitHub提供在線協作環境。

如何將github用於HTML?如何將github用於HTML?Apr 07, 2025 am 12:13 AM

使用GitHub管理HTML項目的原因是它提供了版本控制、協作開發和展示作品的平台。具體步驟包括:1.創建並初始化Git倉庫,2.添加和提交HTML文件,3.推送到GitHub,4.使用GitHubPages部署網頁,5.利用GitHubActions自動化構建和部署。此外,GitHub還支持代碼審查、Issue和PullRequest功能,幫助優化和協作開發HTML項目。

我應該從git還是github開始?我應該從git還是github開始?Apr 06, 2025 am 12:09 AM

從Git開始更適合深入理解版本控制原理,從GitHub開始更適合關注協作和代碼託管。 1.Git是一個分佈式版本控制系統,幫助管理代碼版本歷史。 2.GitHub是一個基於Git的在線平台,提供代碼託管和協作功能。

Microsoft是否擁有Git或Github?Microsoft是否擁有Git或Github?Apr 05, 2025 am 12:20 AM

微軟不擁有Git,但擁有GitHub。 1.Git是林納斯·托瓦茲在2005年創建的分佈式版本控制系統。 2.GitHub是基於Git的在線代碼託管平台,成立於2008年,微軟於2018年收購。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具