Git分支管理

2021-09-14 05:54:46 字數 3107 閱讀 6157

svn中也有分支管理,但是很low,git的分支管理非常強大,本文先不去說分支管理內部到底怎麼做的,我們先來看看git中最基本的分支管理操作。

1.git概述

2.git基本操作

3.git中的各種後悔藥

小夥伴們都知道,我們在完成乙個專案時,不可能是「單執行緒」開發的,很多時候任務是並行的,舉個栗子:專案2.0版本上線了,現在要著手開發3.0版本,同時2.0版本可能還有一些bug需要修復,這些bug修復之後我們可能還會發2.1,2.2,2.3這些版本,我們不可能等所有bug都修復完了再去開發3.0版本,修復2.0的bug和開發3.0的新功能是兩個並行的任務,這個時候我們3.0的功能開發直接在master分支上進行肯定不合適,我們要保證有乙個穩定,可以隨時發版本的分支存在(一般情況下這個角色由master分支來扮演),此時我們就可以靈活的使用git中的分支管理功能:

1.建立乙個長期分支用來開發3.0功能,假設這個分支的名字就叫v3,我們在v3上新增新功能,並不斷測試,當v3穩定後,將v3合併到master分支上。

2.建立乙個特性分支用來修復2.0的bug,一旦bug修復成功,就將該分支合併到master上,一旦發現新bug,就立馬再建立分支進行修復,修復成功之後再合併。

以上兩個步驟同步進行,這在svn中簡直是不可想象的,因為svn的分支管理太low,而git能夠讓我們做到隨心所欲的建立、合併和刪除分支。

我們可以通過git branch命令來檢視當前倉庫有哪些分支,而我們處於哪乙個分支中,如下:

這裡顯示當前倉庫只有乙個master分支,這是git預設建立出來的,master前面的*表示我們當前處於這乙個分支中。

我們可以利用git branch 《分支名》命令來建立乙個分支,然後利用git checkout 《分支名》來切換分支,如下:

如果小夥伴覺得這樣太麻煩,可以通過git checkout -b 《分支名》來一步到位,建立並切換分支,如下:

現在我切換到fa分支中,由於fa分支是從master分支中建立出來的,所以此時fa分支的內容和master分支的內容是一致的,然後我在fa分支中向git01.txt檔案新增一行內容並提交,此時fa分支中的git01.txt和master分支中git01.txt的內容就不相同了,具體操作如下:

上圖展示了此時master分支和fa分支的不同,現在我通過git merge --no-ff 《分支名》命令將fa分支合併到master分支上。其中--no-ff表示強行關閉fast-forward方式,fast-forward方式表示當條件允許時,git直接把head指標指向合併分支的頭,完成合併,這種方式合併速度快,但是在整個過程中沒有建立commit,所以如果當我們刪除掉這個分支時就再也找不回來了,因此在這裡我們將之關閉。

想要合併分支,我們先切換到master分支上,然後執行git merge --no-ff fa命令即可完成分支合併,如下圖:

合併成功後,我們看到master分支上的git01.txt上已經有了fa分支中的內容了。

我們可以通過git log --graph命令來直觀的檢視分支的建立和合併等操作,如下圖:

所謂的分支衍合其實也是分支合併的一種方式,下面我們就來看看這個分支衍合到底是什麼樣的。現在我的master分支的內容和fa分支的內容是保持一致的,fa是從master中建立出來的,如下圖:

現在我向fa和master中各自做一次提交,如下圖:

此時我們執行如下兩條命令將兩個分支合併:

$ git checkout fa

$ git rebase master

rebase命令在執行的過程中會首先把fa中的每個commit取消,並且將之儲存為臨時patch,再將fa分支更新為最新的master分支,然後再把那些臨時的patch應用到fa上,此時fa分支將指向新建立的commit上,那些老的commit將會被丟棄,這些被丟棄的commit在執行git gc命令時會被刪除。合併後的分支如下圖:

上面的git rebase master命令在執行的過程中有可能會發生衝突,發生衝突時我們有兩種方案,一種直接退回到之前的狀態,另一種就是解決衝突繼續提交。

我們可以通過如下命令來回到之前的狀態:

如下圖:

我們前面提到了在分支衍合時出現衝突的解決方案,其實普通的合併也有可能出衝突,出現衝突很正常,解決就是了,git merge合併分支時如果出現衝突還是先重新編輯衝突檔案,編輯完成之後,再執行git add 和git commit即可。

git 分支管理

一 遠端倉庫有master和dev分支 1.轉殖 git clone 這個git路徑是無效的,示例而已 2.檢視所有分支 git branch all 預設有了dev和master分支,所以會看到如下三個分支 master 本地主分支 origin master 遠端主分支 origin dev 遠...

git分支管理

1 遠端倉庫相關命令 檢出倉庫 git clone git 檢視遠端倉庫 git remote v 新增遠端倉庫 git remote add name url 刪除遠端倉庫 git remote rm name 拉取遠端倉庫 git pull remotename localbranchname ...

Git分支管理

1.檢視分支 檢視本地倉庫所有分支 git branch v1.8.0.local v1.8.1 v1.8.2 master 2.檢視本地和遠端倉庫所有分支 git branch a master remotes origin head origin master remotes origin v1...