Git学习--> 分支管理
5分支操作命令
参考文献 : http://www.ruanyifeng.com/blog/2012/07/git.html
git branch --查看分支
git branch -d <分支名称> --删除分支
git branch -D <分支名称> --强制删除
git checkout -b <分支名称> --建立分支
git checkout <分支名称> --切换分支
git merge --no-ff <分支1> --合并分支
PS:Git分支管理,可以看阮一峰老师写的博客
开发过程中碰到的问题也比较多,在不影响主要分支的情况下,我们建立一个主要分支的backup,另外一套,俗称主分支的影子,我们现在这个影子上进行各种添加修改删除等等操作,然后在分支上测试,测试完成后,我们再将分支合并到主库上面去,如下图所示
图5.1
图5.2
5.1 建立分支命令
Git创建Develop分支的命令:
git checkout -b develop master
git branch 察看当前所在分支,如果没有分支就会显示在master下
看到有命令,带*的就表示我们目前所在的分支。注意到上面是master分支,建立develop分支之后,马上跳到了develop分支了。
$ git branch
* master
skyman@SKYMAN-CF7E3587 ~/manual56/docs/Chapter_17 (master)
$ git checkout -b develop master
Switched to a new branch 'develop'
skyman@SKYMAN-CF7E3587 ~/manual56/docs/Chapter_17 (develop)
$
另外git的分支跟svn里面的分支包括svn里面的tags不太一样,svn里面的分支以及tag是直接copy到另外一个文件以及文件夹下面,保存了当前为止所有代码的一个副本。但是git的分支是没有这个功能的,在查阅官方文档之后,我的理解是git它只是设置了一个指针,指到这个修改版本这个修改记录下指到某一个修改点,然后从这个点之前的所有修改都属于这个分支或者说属于这个tag,有点拗口吧,如果实在没有理解的话,大家也可以查看一些资料,推荐去阅读英文官网http://en.wikipedia.org/wiki/Git_(software)#External_links。
5.2 切换分支
切换分支用checkout命令,比如Git checkout master
$ git checkout master
Switched to branch 'master'
skyman@SKYMAN-CF7E3587 ~/manual56/docs/Chapter_17 (master)
$
另外如果需要从develop分支下分支合并一些修改记录到master下,使用merge命令,先确保跳转到master分支下,然后使用merge命令带上—no-ff参数。
$ git checkout master
Switched to branch 'master'
skyman@SKYMAN-CF7E3587 ~/manual56/docs/Chapter_17 (master)
$ git merge --no-ff develop
Already up-to-date.
skyman@SKYMAN-CF7E3587 ~/manual56/docs/Chapter_17 (master)
$
但是这里显示的是already up-to-date,由于刚才没有任何修改,所以显示是最新的记录。另外分支的话,用完分支之后,我们觉得分支没有用了,我们可以将分支删除。
5.3 删除分支用-d参数来实现删除分支功能,这个要在确保所以修改已经提交的情况下再执行此删除操作,但是如果我们有一些修改没有提交但是又想强制删除这个分支呢?那怎么办?可以用-D参数来实现强制删除功能,这里实验没有做任何修改,所以用-d参数就可以了。
$ git branch -d develop
Deleted branch develop (was 3e96f90).
skyman@SKYMAN-CF7E3587 ~/manual56/docs/Chapter_17 (master)
$ git branch
* master
skyman@SKYMAN-CF7E3587 ~/manual56/docs/Chapter_17 (master)
$
最后用git branch命令查看下,已经没有develop分支了,它被删除了。