Git分支操作(Git branch)
2015-06-21 10:16
381 查看
前言
标题已经透露了本篇博文的目标:熟悉GIT的基本分支操作。假定你已经熟悉GIT的基本操作,如克隆仓库,提交代码等等。
你也需要了解GIT的基本概念,例如GIT的branch,commit等。
如果你还不熟悉这些,请移步https://git-scm.com/。
正文
创建分支
从develop创建一个分支
切换到develop$ git checkout develop |
$ git pull origin develop |
创建分支
$ git checkout -b hfd_project_A_local |
此时我们就拥有了一个名为hfd_project_A_local的分支。它和develop分支是一模一样的,名字除外。
将分支提交到远程仓库
$ git push origin <本地分支名>:<远程分支名> $ git push origin hfd_project_A_local:hfd_project_A |
获取远程分支
有时你需要在他人已经创建好的分支上进行开发,此时你就要用到这个技能了。$ git fetch origin <远程分支名>:<本地分支名> $ git fetch origin hfd_project_A:hfd_project_A_local |
更新分支
在团队合作时,你和同事都不断将自己的代码提交到远程仓库,为了将远程的代码同步到本地,你可以:$ git checkout hfd_project_A_local $ git pull origin <远程分支名> $ git pull origin hfd_project_A |
如果一切顺利的话,远程的代码就已经合并到你的本地分支了。
合并分支
在并行开发等情况下,你可能需要将一个分支合并到另一个分支$ git checkout hfd_project_B $ git pull origin hfd_project_B $ git checkout hfd_project_A $ git pull origin hfd_project_A $ git merge hfd_project_B |
一切顺利,此时hfd_project_B成功合并到了hfd_project_A
解决冲突
在更新分支、合并分支时,如果遇到阻碍,那往往是因为遇到了冲突,这意味着GIT不能自动合并两个文件了。如此,我们只能手动解决冲突。
$ git merge hfd_project_B Auto-merging app-trade-hfb /lib/dao/hfd/kernel/orderdetail .php CONFLICT (content): Merge conflict in app-trade-hfb /lib/dao/hfd/kernel/orderdetail .php Automatic merge failed; fix conflicts and then commit the result. |
$ git status # On branch hfd_project_A # Unmerged paths: # (use "git add/rm <file>..." as appropriate to mark resolution) # # both modified: app-trade-hfb/lib/dao/hfd/kernel/orderdetail.php |
打开遇到冲突的文件,找到类似如下的内容
<<<<<<< HEAD $oORM->addFilter( 'iStatus' , '=' , 1); ======= $oORM->addFilter( 'iStatus' , '=' , 0); >>>>>>> hfd_project_B |
经过确认,我们确定了应该保留哪一行,上面的内容改为
$oORM->addFilter( 'iStatus' , '=' , 1); |
告诉GIT我们已经解决冲突了
$ git add app-trade-hfb /lib/dao/hfd/kernel/orderdetail .php $ git status # On branch hfd_project_A # Changes to be committed: # # modified: app-trade-hfb/lib/dao/hfd/kernel/orderdetail.php # |
Nice,可以提交代码了。
合并develop
这往往发生在QA同事已经测试完毕,恭喜你,你的分支通过测试了。然后,你就可以按照“合并分支”部分的描述,将你的开发分支合并到develop。
别忘记提交到远程仓库哦
相关文章推荐
- 关于select函数使用的fd_set
- swift protocol mutating
- Android数据库SQLite使用详解二 : 学生管理系统的简单实现
- linq分页扩展
- 读后感
- 重踏学习Java路上_Day06(java 基础下与面向对象,二维数组与面向对象基础)
- Git短命令(alias,别名)
- (第五章)java面向对象之this的作用总结
- PATBasic——1009. 说反话 (20)
- Nginx安装部署
- 社説 20150621 新国立競技場 立ち止まって計画を見直そう
- 社説 20150621 農地集積バンク 利用促進の努力が足りない
- FPGA 处理 视频信号噪声
- 关于ftp中文本模式和二进制模式上传文件的区别
- NSNotificationCenter 的使用详解
- hadoop学习(7)----将Hadoop2.6源码导入到win7下的eclipse
- Andrew NG机器学习课程笔记(十一)
- 【最短路】【水题】【cogs 497】奶牛派对
- C++构造函数中抛出的异常
- [数据结构]八皇后(暴力,解答树,DFS回溯)