列出全部分支,當前分支前面會標一個*號git
$ git branch * dev master
表示有兩個分支,當前分支爲dev。app
git branch命令的-r選項,能夠用來查看遠程分支,-a選項查看全部分支。測試
$ git branch -r MyName/master $ git branch -a * master remotes/origin/master
上面命令表示,本地倉庫的當前分支是master,遠程分支是origin/master。3d
git branch命令的-d選項,用於刪除分支(刪除分支不能在 被刪除分支上 進行)code
$ git branch -d test Deleted branch test (was 64fcede).
切換分支blog
$ git checkout -b dev origin/master
上面命令表示,在origin/master的基礎上,建立一個新分支並切換至新分支。git checkout命令加上-b參數表示建立並切換,即至關於:開發
$ git branch dev //建立dev分支 $ git checkout dev //切換到dev分支 Switched to branch 'dev'
合併指定分支到當前分支rem
$ git merge dev
當爲dev進行新的一次提交,切換到master分支,會看到Git還會自動提示咱們當前master分支比遠程的master分支要超前1個提交。文檔
$ git checkout master Switched to branch 'master' Your branch is ahead of 'MyName/master' by 1 commit. (use "git push" to publish your local commits)
接下來爲master分支也進行一次新的提交,而後合併dev分支it
$ git merge dev Auto-merging 新建文本文檔.txt CONFLICT (content): Merge conflict in 新建文本文檔.txt Automatic merge failed; fix conflicts and then commit the result.
能夠看到git提示txt文件存在衝突,必須手動解決衝突後再提交。此時查看修改的txt
$ cat 新建文本文檔.txt 123 <<<<<<< HEAD master change ======= dev change >>>>>>> dev
Git用<<<<<<<,=======,>>>>>>>標記出不一樣分支的內容
接下來對內容進行修改再提交
git add * $ git commit -m'conflict fixed' [master a94df7f] conflict fixed
分支合併狀況可用帶參數的git log查看
版本庫的兩條主要分支:Master和Develop。前者用於正式發佈,後者用於平常開發。
除了常設分支之外,還有一些臨時性分支,用於應對一些特定目的的版本開發。臨時性分支主要有三種:
這三種分支都屬於臨時性須要,使用完之後,應該刪除,使得代碼庫的常設分支始終只有Master和Develop。
第一種是功能分支,它是爲了開發某種特定功能,從Develop分支上面分出來的。開發完成後,要再併入Develop,而後刪除feature分支。
功能分支的名字,能夠採用feature-*的形式命名。
它是指發佈正式版本以前(即合併到Master分支以前),咱們可能須要有一個預發佈的版本進行測試。
預發佈分支是從Develop分支上面分出來的,預發佈結束之後,必須合併進Master和Develop分支,而後刪除預發佈分支。它的命名,能夠採用release-*的形式。
軟件正式發佈之後,不免會出現bug。這時就須要建立一個分支,進行bug修補。
修補bug分支是從Master分支上面分出來的。修補結束之後,再合併進Master和Develop分支,而後刪除bug分支。它的命名,能夠採用fixbug-*的形式。
假若有個場景,在工做中,接到個bug修復任務,此時你正在dev進行的工做尚未提交也沒辦法提交(還未完成),注意,未提交狀態下切換分支會將狀態合併到切換分支。要想將dev正在進行的工做現場保存起來,就須要使用Git提供的 git stash
$ git stash Saved working directory and index state WIP on dev: d5dd078 working
查看工做區,能夠看到是乾淨的
$ git status On branch dev nothing to commit, working tree clean
接下來,就要肯定bug在哪一個分支,切換到對應分支並建立臨時分支
$ git checkout master Switched to branch 'master' Your branch is ahead of 'MyName/master' by 11 commits. (use "git push" to publish your local commits) $ git checkout -b bug Switched to a new branch 'bug'
完成修復bug後,切換到master分支接着完成合並,最後刪除bug分支,bug修復工做便完全結束。
接下來就要回到本來的dev工做了
git checkout dev
以前的保存的工做現場就用git stash list進行查看
$ git stash list stash@{0}: WIP on dev: d5dd078 working
能夠看到現場被保存在某個地方,接下來有兩個方法恢復:
一是用git stash apply,恢復後stash內容不刪除,要刪除的話須要用git stash drop命令
二是用git stash pop,恢復的同時把stash內容刪除。
假如你在開發一個新功能,最好新建一個feature分支,