項目開發時很難一條主線走到底,必不可免的要建立分支。修改Bug或添加新特性時修改的未加驗證的代碼直接提交到主分支,絕對會讓和你一塊兒工做的小夥伴們崩潰,這時候建立分支就很必要了。git
在Git中建立分支的成本很低,並且支持本地分支,在本地分支上開發對其餘小夥伴基本沒有影響。blog
git branch是常規的分支管理命令。開發
首先建立一個git庫,it
mkdir mygit cd mygit git init
建立了mygit文件夾,進入文件夾後,建立git庫。ast
增長readme文件,class
echo "hello, my git." > readme.txt
提交,test
git add readme.txt git commit -m "init and add readme.txt"
使用git status,看一下當前庫的狀態,bug
$ git status On branch master nothing to commit, working directory clean
只有一個分支(branch)master,使用git branch命令查看,也是如此,項目
$ git branch -av #增長-av參數,輸入全部分支的詳細信息 * master 0e9691a init and add readme.txt
增長一個新的分支my_branch1,di
git branch my_branch1
切換到新分支,
git checkout my_branch1
修改readme.txt文件,
$ cat > readme.txt << EOF > hello, my git. > Git is very useful! > EOF
提交,
git add . git commit -m "test branch modify"
查看readme.txt文件,
$ cat readme.txt hello, my git. Git is very useful!
切換到master分支,
git checkout master
查看readme.txt文件,
$ cat readme.txt hello, my git.
從my_branch1分支切換到master分支後,readme.txt文件也被替換了。
將my_branch1分支下的修改合併到master分支,
git merge my_branch1
查看readme.txt文件,
$ cat readme.txt hello, my git. Git is very useful!
已經將my_branch1分支的修改合併到了master中,如今刪除my_branch1分支,
$ git branch -d my_branch1 Deleted branch my_branch1 (was a937765).
在git中建立分支,基本沒有什麼成本,在修改bug或者添加新功能時,咱們能夠盡情的建立分支修改。
多我的合做時,合併分支常常遇到衝突的狀況,咱們來模擬一下,
建立分支my_branch2,
git branch my_branch2
切換到my_branch2分支,修改readme.txt文件,在其後追加,
git checkout my_branch2
echo "Git is very great." >> readme.txt
提交,
git add readme.txt git commit -m "test branch merge conflict"
切換到master分支,修改readme.txt文件,並提交,
git checkout master echo "git is great." >> readme.txt git add readme.txt git commit -m "test branch merge conflict"
合併my_branch2分支,
$ git merge my_branch2 Auto-merging readme.txt CONFLICT (content): Merge conflict in readme.txt Automatic merge failed; fix conflicts and then commit the result.
產生衝突了。
查看readme.txt文件,
$ cat readme.txt hello, my git. Git is very useful! <<<<<<< HEAD git is great. ======= Git is very great. >>>>>>> my_branch2
<<<<<<< HEAD與=======之間是master分支代碼,=======與>>>>>>> my_branch2之間是my_branch2分支代碼,咱們但願保留my_branch2分支修改的代碼,編輯readme.txt文件以下:
hello, my git. Git is very useful! Git is very great.
提交,
git add readme.txt git commit -m "test branch merge conflict"