赞
踩
分支是指在主干道上分支的支线,可以前往不同的地方,也可以到达相同的终点(只是实现的路线不同)。Git指向团队开发中的个体,各开发者可以有自己的分支,开发时不会影响其他分支的开发进度。分支完成阶段性工作后,可以整合到上级分支。(功能开发完成,调试OK )这个上级分支一般是指Git默认创建的Master分支,这个分支不参与开发,只用于项目的管理、维护、集成、发布。
Git分支不是复制所有数据,而是指向提交对象的指针。在执行“转移”(Git add )操作时,git会计算每个文件的有效性值,并将当前版本的文件快照保存在转移区域中并等待提交。此外,在执行git commit操作时,计算出的有效性值和快照将保存为树对象。每个commit对象都包含指定tree对象的哈希值,每个tree对象都包含指定blob对象的哈希值,因此Git不是文件的变化或差异,而是一系列不同时间点的文件由于Git分支的创建和切换实际上只是创建指针和查找指针,因此分支的创建和分支的切换几乎都是即时的。找到指针指向的commit对象,然后将工作区恢复为该commit对象所指向的文件快照。
Git在每次提交时合并为一个时间线,每次提交时前进并形成分支。每次提交时,都会生成记录当前位置的id (散列值),头指向最后提交的位置)或当前分支。
分支的创建本质上只是创建指向commit对象的指针,Git在初始化时自动创建第一个master分支和指向master的指针head。命令:可以使用 git branch 分支名称 创建指向当前提交对象的分支主节点的分支。也就是说,将在主节点上创建分支。VSCode创建分支也很容易,在左下角单击分支,下拉框就会出现。可以在此处创建新分支,也可以选择现有分支进行切换。
使用指令:git branch可以看到所有的本地分支。其中标有*的表示当前的工作分支,如果想查看分支的详细信息,则命令:git branch -v可以查看分支所指的ID和提交信息。
切换分支
要使用分支,必须首先切换到该分支。可以使用命令 git checkout 分支名称 来实现可切换的分支。本质上是修改头部指针的指针,切换到分支,使工作区的内容指向分支最后提交的快照的内容。此时,master分支在提交时不移动,而是随着提交操作移动。命令:可以使用git checkout -b分支名称直接创建和切换指定的分支。这等同于运行了两个命令:切换新分支和分支。
分支合并
当分支完成了阶段性的开发完并调试好后我们就可以进行合并了,使用指令:git merge <分支名> 可以将指定分支合并到当前分支。注意这里是提交到当前分支,所以合并之前一定要确认下当前位于哪个分支上。如果要合并到master分支就需要先切换到master分支上,再执行git merge <分支名> 合并操作。当合并(merge)发生时会产生新的提交(commit),当前分支会自动向前移动并生成新的分支合并记录了。合并不会影响被合并的分支,可以重新切换到该分支继续提交修改。
当分支任务完成并与其他分支合并之后,如果该分支不再参与后续工作或者不需要该分支时就可以进行删除。利用指令:git branch -d <分支名> 可以删除指定分支,当然删除分支前需要先切换到其他分支才能进行删除操作。如果要强制删除分支的话可以使用指令:git branch -D <分支名> ,不管该分支有没有合并到当前分支的提交记录都进行删除。
对于已经有提交记录的分支删除后,实际上只是删除指针其commit记录还被保留,恢复之前我们可以通过指令:git reflog查找该分支最后一次提交时的ID(最前面的hash值),我们可以根据ID创建新的分支来恢复之前的分支数据。恢复指令为:git branch <分支名> <hash值> ,当然你也可以从远程仓库重新clone一份。
总结:
分支可以从主线上分离开来,在不影响主线的同时继续工作。在分支上开发并调试好了后再合并到主分支,那么每个人就可以负责不同的模块开发而不会影响到别人。所以利用分支不仅可以高效的管理项目资源,也可以更好的协调人力进行并行开发,提高开发效率降低开发周期。以上内容是小编给大家分享的【Git实战:branch分支操作详解】,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。