Git-分支操作
Git-分支操作
- 什么是分支?
- 在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独
分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时
候,不会影响主线分支的运行。
- 在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独
- 分支的优点?
- 同时并行推进多个功能开发,提高效率。各个分支在开发过程中,如果某一失败 不会对其他有任何影响。
分支的基本操作
-
查看分支
1
git branch -v
-
创建分支
1
git branch <分支名>
-
切换分支,移动
head
指针,.git/HEAD
文件显示当前分支1
2git checkout <分支名>
git switch <分支名> # 新版本Git提供switch命令切换分支 -
创建分支并立即移动到新分支下
1
2git checkout -b <分支名>
git switch -c <分支名> # 新版本 -
删除分支
1
git branch -d <分支名>
-
合并分支
1
git merge <被合并的分支名> # 自动合并
- 合并冲突(Merge conflict):当两个分支在文件同一个位置有不同的修改时,Git无法自动合并分支,需要认为决定新代码内容
- 此时需要手动打开文件,并决定哪行需要保留
- 然后添加到暂存区
git add <文件名>
- 之后提交修改
git commit -m "<备注>"
- !!!此处
git commit
不能带文件名
- !!!此处
- 合并冲突(Merge conflict):当两个分支在文件同一个位置有不同的修改时,Git无法自动合并分支,需要认为决定新代码内容
-
Fast forward模式:当前分支合并另一个分支的时候如果没有冲突,就直接移动两个分支指针来达到合并的过程,合并后会删除无用的分支, 这种情况下会丢掉分支的所有信息,Fast forward默认是开启的
-
强制禁用Fast forward模式后,会在merge时生成一个新的commit,不会丢失分支信息
1
git merge --no-ff -m "<备注>" <被合并的分支名>
--no-ff
,禁用Fast forward-m
,合并时创建一个新的commit
-
- 一些个人理解
- Git在当前位置创建分支时,就是新建一个指针
- 切换分支时就是将HEAD指针指向目标分支的指针
- 把新分支合并到旧分支时,先将HEAD指针指向旧分支,然后将新分支指向的内容向HEAD指针提交
- 删除分支就是把新分支的指针删除
参考资料
Comment