分支是Git的一個殺手級應用,和其他版本控制工具不一樣的是,git創建及切換分支的效率極為有效率。
分支簡介
何為分支呢?我們從一個我們非常熟悉的場景來講述,一個已經上線的產品,現在需要新增一個功能。這時候,如果我們在原分支上繼續開發的話,就很不方便,因為是一個已經上線的應用了,肯定需要先測試完畢後才能夠上線。一般我們的做法是,建立一個新的分支,在這個新的分支上開發新的功能,測試完畢後,再合併到主分支上。
分支的建立、切換
目前我的版本庫分支情況如下:
建立分支
現在我們建立一個新的分支,dev。建立分支的及檢視分支指令如下:
git branch 分支名 git branch # git branch dev # git branch dev * master
#切換分支
分支已經建立成功了。現在我們來切換到新的分支,切換分支的命令如下git checkout 分支名
# git checkout dev Switched to branch 'dev'
#現在,我們在新的分支做一些修改,然後提交,然後切換到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 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 checkout -b dev
然後在新的分支上做一些修改。
此時,發現線上出現了一個嚴重的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)
新功能完成后,提交到版本库。
冲突解决
现在我们新的功能完成了,那么就可以把它合并到master分支上了。现在我们来演示合并时遇到冲突时,如何去解决。
$ 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
<br/>
$ cat index.php <?php echo 'version 1.1 finished';
然后再add并提交,最后在提交
$ git commit -m 'merge dev'
这个时候就合并成功了,现在就去删除dev分支吧。
$ git branch -d dev
以上是版本控制工具Git-分支管理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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

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

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

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

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

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

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

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


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

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

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

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

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

Dreamweaver Mac版
視覺化網頁開發工具