以前說過,每次修改以後,Git 並非保存這些修改以後的差別變化,實際上就像一個照相機同樣,將修改後的文件拍下做爲文件快照,記錄在一個微型的文件系統中。在 Git 中提交時,會保存一個提交對象,這個對象包含一個暫存內容快照的指針。而 Git 中的分支其本質上是一個指向 commit 對象的可變的指針,使用 master 做爲分支的默認名字,一般指向的是最新的一次提交。git
每次的提交,Git 把他們穿起來連成一條線,而主分支master就在這條線上隨着提交測更新移動,而 HEAD 指向master,表示咱們當前處在 master 分支上(很差意思,直接就用廖雪峯老師的圖了,他的教程請戳這裏)指針
建立一個叫作 dev 分支,這個分支默認會只想當前你所處在的提交對象上,切換到這個分支上後,HEAD 便指向了 dev。code
從這個時候開始,對工做區的操做都只是在 dev 分支上發生了,在 dev 的上提交一次以後,master 指向原來的那個提交對象,而 dev 會指向最新的提交對象。咱們稱:master 落後了 dev 一個 commit。當咱們試圖將 master 指向 dev 當前的提交時,這個操做就是合併分支。對象
在上述的這幾個過程當中,工做區的內容沒有變化,整個過程就是修改幾個指針而已,幾乎就是瞬間完成。教程
建立一個 crisp 分支,而後切換到這個分支:開發
git checkout -b crisp Switched to a new branch 'crisp'
git checkout -b
表示建立並切換分支,至關於將下面兩步操做合併成一步來作get
git branch crisp // 建立分支 git checkout crisp // 切換到指定的分支
同時,能夠用 git branch
查看分支,這個命令會列出全部的分支,在當前的分支前面會表上一個 * 號。it
分支與分支之間相互獨立,彼此絕緣,因此能夠在 主分支master的基礎上分出若干個分支,進行不一樣的操做,好比不一樣模塊的開發,bug的修復等,工做完成以後合併到主分支就好了。怎麼合併分支呢?ast
假設咱們正在 dev 分之上開發,當開發完成後,在這個分之上提交代碼基礎
git add . git commit -m "dev 開發完成!"
此時的提交是在 dev 分支上的提交,當你切回 master 上是,dev 上的修改你都看不到。此時的 master 若是沒有人提交過的話,則停留在切換分支以前的那個提交點上,也就是落後與 dev 分支。這個時候咱們就須要將分支合併了。
git checkout master // 先切回 master 分支 git merge dev // 手動將dev 分支上的提交合併到 master 上
當某一個分支不在須要的時候,能夠將它刪除
git branch -d branchname
小小的總結一下:
查看分支:git branch 建立分支:git branch name 切換分支:git checkout name 建立+切換分支:git checkout -b name 合併某分支到當前分支:git merge name 刪除分支:git branch -d name