首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 系统运维 >

Git学习-> 旁支管理

2013-10-08 
Git学习-- 分支管理5分支操作命令参考文献 : http://www.ruanyifeng.com/blog/2012/07/git.htmlgit branc

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,另外一套,俗称主分支的影子,我们现在这个影子上进行各种添加修改删除等等操作,然后在分支上测试,测试完成后,我们再将分支合并到主库上面去,如下图所示

Git学习-> 旁支管理

图5.1 

Git学习-> 旁支管理

图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分支了,它被删除了。

 

热点排行