分支管理
一、分支推进
-
主分支
单线分支,随着代码的提交而形成的一条直线,HEAD 随着commit提交之后的节点移动而移动。
-
子分支
- 当切换到子分支的时候,HEAD 则指向子分支的节点。
-
在子分支上commit提交,则子分支到下一个节点,主分支不变。
-
切换到主分支上,HEAD 则指向主分支。
-
当主分支合并子分支后,并提交,HEAD依然指向主分支并到下一节点。
-
当整个项目结束后,只保留主分支
二、创建分支
1 2 3 4 5 | # 第一种方式 创建dev分支 -b 创建并切换分支 $ git checkout - b dev # 第二种方式 $ git branch dev # 创建dev分支,但没有切换分支 $ git checkout dev # 切换dev分支 |
三、查看分支
1 2 3 4 | # * dev 表示当前在dev分支上 $ git branch * dev master |
四、合并分支
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #切换到dev 分支 $ git checkout dev # 创建一个文件 $ touch index.html # 提交到工作区 $ git add index.html # 提交到版本库 $ git commit - m '[+ add index.html file]' # 切换到master分支 $ git checkout master # 查看当前文件 $ ls # 合并分支 $ git merge dev # 查看当前文件 $ ls # 删除dev 分支 $ git branch - d dev |
五、解决冲突
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # 切换到master分支 $ git checkout master # 创建一个文件 readme.txt,写入 this is a readme.txt file $ touch readme.txt $ git add readme.txt # 创建一个分支并切换 $ git checkout - b fuqiang # 写入readme.txt 文件 testing is now ! 并保存 $ vim readme.txt # 提交到分支fuqiang的工作区 $ git add readme.txt # 提交到分支fuqiang的版本库 $ git commit - m '[* 制造bug]' # 切换到master分支 $ git checkout master # 合并分支 $ git merge fuqiang # 合并出错,打开 readme.txt 把 >>> 之类的东西删除掉 # 提交到master分支的工作区 $ git add readme.txt # 提交到master分支的版本库中 $ git commit - m '[+ add readme.txt file]' |