首頁 php教程 PHP开发 Git 教學課程分支管理詳解

Git 教學課程分支管理詳解

Dec 16, 2016 pm 03:04 PM

Git 分支管理

幾乎每一種版本控制系統都以某種形式支援分支。使用分支意味著你可以從開發主線上分離開來,然後在不影響主線的同時繼續工作。

有人把 Git 的分支模型稱為"必殺技特性",而正是因為它,將 Git 從版本控制系統家族中區分出來。

建立分支指令:

git branch (branchname)

切換分支指令:

git checkout (branchname)


git checkout (branchname)


git checkout (branchname)


替換你的工作目錄的內容, 所以多個分支不需要多個目錄。


合併分支指令:


git merge


你可以多次合併到統一分支, 也可以選擇在合併之後直接刪除被併入的分支。


Git 分支管理


列出分支


列出分支基本指令:


git branch

沒有參數時,git branch 會列出你在本地的分支 bgit。

$ git branch
* master


此例的意思就是,我們有一個叫做"master"的分支,並且該分支是當前分支。

當你執行 git init 的時候,缺省情況下 Git 就會為你創建"master"分支。


如果我們要手動建立一個分支,並切換過去。執行 git branch (branchname) 即可。


$ git branch testing
$ git branch
* master
 testing
登入後複製

   


現在我們可以看到,有了一個新分支 testing。

當你以此方式在上次提交更新之後創建了新分支,如果後來又有更新提交, 然後又切換到了"testing"分支,Git 將還原你的工作目錄到你建立分支時候的樣子


接下來我們將示範如何切換分支,我們用 git checkout (branch) 切換到我們要修改的分支。

$ ls
README
$ echo 'w3cschool.cc' > test.txt
$ git add .
$ git commit -m 'add test.txt'
[master 048598f] add test.txt
 2 files changed, 1 insertion(+), 3 deletions(-)
 delete mode 100644 hello.php
 create mode 100644 test.txt
$ ls
README test.txt
$ git checkout testing
Switched to branch 'testing'
$ ls
README hello.php
登入後複製

   

當我們切換到"testing"分支的時候,我們新增的新檔案test.txt被移除了, 原來被刪除的檔案hello.php檔案又出現了。切換回"master"分支的時候,它們有重新出現了。

$ git checkout master
Switched to branch 'master'
$ ls
README test.txt
登入後複製

   



我們也可以使用 git checkout -b (branchname) 指令來建立新分支並立即切換到該分支下,從而在該分支中操作。

$ git checkout -b newtest
Switched to a new branch 'newtest'
$ git rm test2.txt 
rm 'test2.txt'
$ ls
README test.txt
$ git commit -am 'removed test2.txt'
[newtest 556f0a0] removed test2.txt
 1 file changed, 1 deletion(-)
 delete mode 100644 test2.txt
$ git checkout master
Switched to branch 'master'
$ ls
README test.txt test2.txt
登入後複製

   

如你所見,我們創建了一個分支,在該分支的上下文中移除了一些文件,然後切換回我們的主分支,那些文件又回來了。
使用分支將工作切分開來,從而讓我們能夠在不同上下文中做事,並來回切換。


刪除分支


刪除分支指令:

git branch -d (branchname)


了獨立內容,你終究會希望將它合併回到你的主分支。 你可以使用以下指令將任何分支合併到目前分支中去:


git merge


$ git branch
* master
 testing
$ git branch -d testing
Deleted branch testing (was 85fc7e7).
$ git branch
* master
登入後複製

   

以上實例中我們將 newtest 分支合併到主分支去,test2.txt 檔案被刪除。


合併衝突


合併並不僅僅是簡單的文件添加、移除的操作,Git 也會合併修改。


$ git branch
* master
 newtest
$ ls
README test.txt test2.txt
$ git merge newtest
Updating 2e082b7..556f0a0
Fast-forward
 test2.txt | 1 -
 1 file changed, 1 deletion(-)
 delete mode 100644 test2.txt
$ ls
README test.txt
登入後複製

   將修改的內容提交到 "change_site" 分支。 現在,假如切換回 "master" 分支我們可以看內容恢復到我們修改前的,我們再修改test.txt檔案。

$ git branch
* master
$ cat test.txt
w3cschool.cc
首先,我们创建一个叫做"change_site"的分支,切换过去,我们将内容改为 www.w3cschool.cc 。
$ git checkout -b change_site
Switched to a new branch 'change_site'
$ vim test.txt 
$ head -1 test.txt 
www.w3cschool.cc
$ git commit -am 'changed the site'
[change_site d7e7346] changed the site
 1 file changed, 1 insertion(+), 1 deletion(-)
登入後複製

   

現在這些改變已經記錄到我的 "master" 分支了。接下來我們將 "change_site" 分支合併過來。


$ git checkout master
Switched to branch 'master'
$ head -1 test.txt 
w3cschool.cc
$ vim test.txt 
$ cat test.txt
w3cschool.cc
新增加一行
$ git diff
diff --git a/test.txt b/test.txt
index 704cce7..f84c2a4 100644
--- a/test.txt
+++ b/test.txt
@@ -1 +1,2 @@
 w3cschool.cc
+新增加一行
$ git commit -am '新增加一行'
[master 14b4dca] 新增加一行
 1 file changed, 1 insertion(+)
登入後複製

   

我們將前一個分支合併到 "master" 分支,一個合併衝突就出現了,接下來我們需要手動去修改它。


$ git merge change_site
Auto-merging test.txt
CONFLICT (content): Merge conflict in test.txt
Automatic merge failed; fix conflicts and then commit the result.
$ cat test.txt 
<<<<<<< HEAD
w3cschool.cc
新增加一行
=======
www.w3cschool.cc
>>>>>>> change_site
登入後複製

   

在 Git 中,我們可以用 git add 要告訴 Git 文件衝突已經解決


$ vim test.txt 
$ cat test.txt 
www.w3cschool.cc
新增加一行
$ git diff
diff --cc test.txt
index f84c2a4,bccb7c2..0000000
--- a/test.txt
+++ b/test.txt
@@@ -1,2 -1,1 +1,2 @@@
- w3cschool.cc
+ www.w3cschool.cc
 +新增加一行
登入後複製

   

 以上就是Git 教程之分支管理詳解的內容,更多相關文章請關注PHP中文網(www.php.cn)!


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1318
25
PHP教程
1268
29
C# 教程
1248
24
git怎麼下載項目到本地 git怎麼下載項目到本地 Apr 17, 2025 pm 04:36 PM

要通過 Git 下載項目到本地,請按以下步驟操作:安裝 Git。導航到項目目錄。使用以下命令克隆遠程存儲庫:git clone https://github.com/username/repository-name.git

git怎麼更新代碼 git怎麼更新代碼 Apr 17, 2025 pm 04:45 PM

更新 git 代碼的步驟:檢出代碼:git clone https://github.com/username/repo.git獲取最新更改:git fetch合併更改:git merge origin/master推送更改(可選):git push origin master

git怎麼合併代碼 git怎麼合併代碼 Apr 17, 2025 pm 04:39 PM

Git 代碼合併過程:拉取最新更改以避免衝突。切換到要合併的分支。發起合併,指定要合併的分支。解決合併衝突(如有)。暫存和提交合併,提供提交消息。

git下載不動怎麼辦 git下載不動怎麼辦 Apr 17, 2025 pm 04:54 PM

解決 Git 下載速度慢時可採取以下步驟:檢查網絡連接,嘗試切換連接方式。優化 Git 配置:增加 POST 緩衝區大小(git config --global http.postBuffer 524288000)、降低低速限制(git config --global http.lowSpeedLimit 1000)。使用 Git 代理(如 git-proxy 或 git-lfs-proxy)。嘗試使用不同的 Git 客戶端(如 Sourcetree 或 Github Desktop)。檢查防火

git commit怎麼用 git commit怎麼用 Apr 17, 2025 pm 03:57 PM

Git Commit 是一種命令,將文件變更記錄到 Git 存儲庫中,以保存項目當前狀態的快照。使用方法如下:添加變更到暫存區域編寫簡潔且信息豐富的提交消息保存並退出提交消息以完成提交可選:為提交添加簽名使用 git log 查看提交內容

如何解決PHP項目中的高效搜索問題? Typesense助你實現! 如何解決PHP項目中的高效搜索問題? Typesense助你實現! Apr 17, 2025 pm 08:15 PM

在開發一個電商網站時,我遇到了一個棘手的問題:如何在大量商品數據中實現高效的搜索功能?傳統的數據庫搜索效率低下,用戶體驗不佳。經過一番研究,我發現了Typesense這個搜索引擎,並通過其官方PHP客戶端typesense/typesense-php解決了這個問題,大大提升了搜索性能。

git怎麼刪除倉庫 git怎麼刪除倉庫 Apr 17, 2025 pm 04:03 PM

要刪除 Git 倉庫,請執行以下步驟:確認要刪除的倉庫。本地刪除倉庫:使用 rm -rf 命令刪除其文件夾。遠程刪除倉庫:導航到倉庫設置,找到“刪除倉庫”選項,確認操作。

git怎麼更新本地代碼 git怎麼更新本地代碼 Apr 17, 2025 pm 04:48 PM

如何更新本地 Git 代碼?用 git fetch 從遠程倉庫拉取最新更改。用 git merge origin/&lt;遠程分支名稱&gt; 將遠程變更合併到本地分支。解決因合併產生的衝突。用 git commit -m "Merge branch &lt;遠程分支名稱&gt;" 提交合併更改,應用更新。

See all articles