分支管理
在实际的软件开发环节中(虽然我还没有真正开发过),我们会遇到这样一些问题:假如我们采用的敏捷开发模式,需要让当前的每一个版本都是可用的。如果给我们分配了某个任务,让自己完成,你在写代码的时候,如果一次写不完,代码提交到主分支以后,可能会造成主分支上整个代码不能正常测试运行,所以我们就需要使用分支,几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。有人把 Git 的分支模型称为必杀技特性,而正是因为它,将 Git 从版本控制系统家族里区分出来。下面就是一个分支的简单模型:
那么分支常用的命令有什么呢?
列出分支:
基本命令:git branch
没有参数时,git branch 会列出你在本地的分支。
此例的意思就是,我们有一个叫做 master 的分支,并且该分支是当前分支。
当你执行 git init 的时候,默认情况下 Git 就会为你创建 master 分支。
如果我们要手动创建一个分支。执行 git branch (branchname) 即可。
现在我们已经拥有了我们的一个分支test,那么我们怎么切换到现在的分支呢?
git checkout (branch name)
其实还有一个更为简单的命令:
git checkout -b <branch-name>
这个命令就是新建分支,并切换到新建的分支上
然后,我们就可以在新建的这条分支上写代码,创建文件之类的操作,
我们新建了一个文件,然后我们切换到master主分支上看看有没有这个文件
master上没有这个文件,使用分支将工作切分开来,从而让我们能够在不同开发环境中做事,并来回切换。
现在我们将分支上的事情做完了,需要将分支和主分支进行合并,怎么办呢?
git merge <branch-name>
那我们再看看test分支上的文件和修改是否在主分支上呢?
如果我们在分支上的某件事做完了,要删除掉这个分支,可以使用这个命令:
git branch -d <branch-name>
合并是挺好的,但是有时候会发生冲突:也就是你提交了两次,合并的时候Git不知道应该合并哪个,还是两个都合并,此时需要我们手动解决冲突:
我们还是新建一个分支,并切换到新的分支上:
接着我们在新的分支上对test文本文件进行修改:
然后我们切换到主分支上,我们可以看到主分支上的文件还是原来的版本:
接着我们在主分支上再对文件进行修改:
同时我们再对文件进行提交合并:
这时候我们会看到提示信息,提示我们自动合并失败了,就需要我们进行手动合并,先打开文件,可以看到冲突内容:
接着我们打开文件,进行手动合并文件:
最后我们需要进行提交,告诉Git冲突已经合并。