git基础------分支管理

什么是git分支

在开发过程中,我们通常不会是一个人去做一个项目,而是团队分工,共同开发。

如何有效地协同开发人员之间,以及开发、测试、上线各环节的工作,在多人开发时是不可避免会遇到的问题。
一般我们在创建项目的时候会针对不同环境创建两个常设分支

  • development:开发环境的稳定分支,公共开发环境基于该分支构建。
  • master:主分支,所有提供给用户使用的正式版本,都在这个主分支上发布。
    还有一些临时性的分支,比如说功能分支,修复bug分支,预发布分支等等

分支管理有什么好处?

  • 因为同时并行推进多个功能开发,互不干扰,提高开发效率。
  • 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
  • 版本库的演进保持简洁,主干清晰,各个分支各司其职。

git分支的一些命令行操作

查看分支,查看当前有哪些分支。

git branch -v

创建新分支

git branch develop

删除分支(删除的分支不是当前正在打开的分支)

git branch -d 分支名

切换分支

git checkout 分支名

合并分支:
第1步:切换到接受修改的分支上

git checkout 需要接受的分支名

第2步:执行 merge 命令

git merge --no-ff 有新内容的分支名

Git merge的时候,有几种合并方式可以选择

fast-forward(默认)
Git 合并两个分支时,如果顺着一个分支走下去可以到达另一个分支的话,那么 Git 在合并两者时,只会简单地把指针右移,叫做“快进”(fast-forward)不过这种情况如果删除分支,则会丢失merge分支信息。

–squash
把一些不必要commit进行压缩,比如说,你的feature在开发的时候写的commit很乱,那么我们合并的时候不希望把这些历史commit带过来,于是使用–squash进行合并,此时文件已经同合并后一样了,但不移动HEAD,不提交。需要进行一次额外的commit来“总结”一下,然后完成最终的合并

–no-ff
关闭fast-forward模式,在提交的时候,会创建一个merge的commit信息,然后合并的和master分支

通常我们把 master 作为主分支,上面存放的都是比较稳定的代码,提交频率也很低,而 develop 是用来开发特性的,上面会存在许多零碎的提交,快进式合并会把 develop 的提交历史混入到 master 中,搅乱 master 的提交历史。所以如果你根本不在意提交历史,也不爱管 master 干不干净,那么 –no-ff 其实没什么用。不过,如果某一次 master 出现了问题,你需要回退到上个版本的时候,比如上例,你就会发现退一个版本到了 commint-3,而不是想要的 commit-2,因为 feature 的历史合并进了 master 里。

解决冲突

在开发过程中,有时会遇到另外一个人跟自己修改了同一行代码,然后就不可避免的会产生冲突。如果解决不好,不仅冲突解决不了,还会造成回滚代码。

解决冲突的方法

  • 在当前分支上找到冲突文件,然后直接修改代码(使用vim修改,cat查看冲突文件,注意要删除git自动生成的冲突代码分隔符)。
    或者使用命令
  • 通过git stash命令,把工作区的修改提交到栈区,目的是保存工作区的修改;
  • 通过git pull命令,拉取远程分支上的代码并合并到本地分支,目的是消除冲突;
  • 通过git stash pop命令,把保存在栈区的修改部分合并到最新的工作空间中;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值