[GitHub]第三講:簡單分支操作


Git 最核心的操作對象是版本( commit ),最核心的操作技巧就是分支。

什麼是分支?

倉庫創建後,一旦有了新 commit,默認就會放到一個分支上,名字叫 master。前面咱們一直看到的多個版本組成的一條歷史線,就是 master 分支。但是一個倉庫內,用戶可以自己創建其他的分支,可以有多條歷史線。

說說 master 這個名字,一般中文叫“主分支”,其實從技術底層來講它跟其他我們自己要創建的分支沒有區別,只不過它是天生的默認分支。實際工程項目中會人爲的給它一個重要的使命,存放穩定代碼。就像 github 公司倡導的。

master 分支上的所有代碼都應該是可以部署的

意思就是 master 分支上的代碼是隨時可以放到產品服務器上跑的代碼。這樣,如果想開發一個新功能,可以新開分支。 想象一下歷史線上有很多節,每個版本就是一節。一個分支相當於一跟竹子,一節節的往上長。

但是實際上在底層並不是每個分支都拷貝出自己獨立的一條歷史線。其實 master 本身只是一個指針,指向 master 分支上最新的一個版本。這樣由於每個 commit 都可以順藤摸瓜找到自己的前一個 commit,那麼這條歷史線就可以確定了。

創建新分支

什麼時候需要開一個新分支,這個後面講各種工作流程的時候會介紹,今天先把基本操作學會。 到客戶端的Branches 這一項

點擊1處的加號,就會彈出2處的對話框。Create a new branch off master 就是來創建一個分支。在對話框中填入 idea,創建了 idea 分支的。所謂 off master 意思是“基於 master ”分支,所以此刻 idea 分支並不爲空,而是擁有和 master 一樣的歷史。如下圖,箭頭所指的小對勾表示“當前分支”( current branch )已經自動切換到 idea 分支。

但是,在底層這個的實現是非常巧妙的,就是又創建一個新的 idea 指針,跟 master 指針指向同一個版本,根本沒有拷貝歷史線。

如果現在我對項目做一下修改,然後 commit 了。那麼移動的只是 idea 指針,master 不變。就成了這樣:

現在 master 分支包含兩個版本 C1 和 C2,idea 分支包含三個版本 C1,C2,C3 。

默認情況下這個 idea 分支只是存在於本地,如果想在遠端倉庫上發佈這個分支,就點一下 idea 分支右側的Publish 按鈕。

這樣,到遠端倉庫看一下,點擊下圖1處,發現果然2處多了一個 idea 分支,3處的輸入框中,不但能搜索已有分支,還能創建新分支,看到了吧,很多操作在本地客戶端和 github.com 上都能進行。

切換分支

到 branches 標籤下,相中哪個分支了,雙擊一下就切換過去了。時間長了你會覺得這個也不夠快,還是純鍵盤操作快。敲 Cmd-B 可以打開分支切換框,輸入名字回車,就切換成功了。

如果你在 idea 分支上有了修改但是還沒有來得及 commit,這時候如果切換分支,那麼 git 會替你保存這部分修改,也就是在切換到的分支上是看不到這部分修改的。但是不要擔心,只要你切換回老分支,修改內容又回來了。

注意,每次切換分支,項目代碼,術語叫工作樹( Working Tree )是會隨着變化的,在編輯器中看看就知道了。

刪除分支

首先當前分支是不能刪除的。什麼意思?到客戶端的 Branches 標籤下,左側有對勾的就是當前分支,打開右側小箭頭的下拉菜單,可以看到 delete 這一項是禁用的。想刪除它,就先要切換到其他分支,例如 master。這樣就可以刪除 idea 分支了,如果執行本地刪除 github.com 上對應分支也會同時被刪除。

在客戶端把分支切換到 idea,現在試圖去刪除 master 。點開 master 分支的小箭頭,發現 delete 一項可以點,所以點一下,但是報錯了:“”master” is the repository’s default branch and cannot be deleted.` 要到 github.com 上修改默認分支( default branch 注意跟當前分支是不同的),就像這樣。

在遠端倉庫,也就是 github.com 上如何切換默認分支呢?到 settings 下面就更改 Default branch 就可以了。

如果只想刪除遠端分支,保留本地分支,可以在客戶端中使用每個分支右側的 Unpublish 這個選項。

總結

只開測試分支,調好代碼 commit 了之後,如果不把代碼搞到 master 分支上是沒有太大意義的,這就涉及到分支合併的問題了,這個是 git 最大最強的一塊功能,後面介紹。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章