在开发中,遇到这样的情况怎么办?

网站已有支付宝在线支付功能,要添加"微信支付",修改了两个文件,wechat.php、pay.php。

刚做到一半,突然有个紧急bug:支付宝支付后不能修改订单状态。你需要立即马上修改这个bug,需要修改的文件是,ali.php、pay.php。

问题是,pay.php文件,已经被你修改了过,而且尚未完成,直接在此基础上改,肯定有问题。把pay.php倒回去?那我之前的工作白费了。

此时你肯定会想:在做"微信支付"时,能否把仓库复制一份,不影响原仓库的内容,修改完毕后,再把副本上的修改合并过去。

好的,这时你已经有了分支的思想。

前面见过的master,即是代码的主干分支。

事实上,在实际的开发中,往往不会直接修改和提交到master分支上,而是创建一个dev分支,在dev分支上,修改测试,再把dev分支合并到master上。

如果有了分支,刚才的难题就好解决了。

在做"微信支付"时,我们创建一个wechat分支,把wechat分支commit,此时,master分支内容不会改变,因为分支不同。

当遇到紧急bug时,创建一个AliBug分支,修复bug后,把AliBug分支合并到master分支上。

再次从容切换到wechat分支上,接着开发"微信支付"功能,开发完毕后,把wechat分支合并到master分支上。

接下来我们详细地介绍一下。

查看所有分支

git branch



这样说明只有master分支,且当前处在master分支上,前面的*号代表当前处于的位置。

创建分支

git brand wechat

这时我们查看分支



这时就有了两个分支,但是我们仍然处于master分支上。

接下来我们切换分支。

git checkout wechat



现在我们就处于wechat分支上了。接下来我们在wechat分支上进行一些修改。



现在config.txt文件被修改了,但此时,master分支上有一个紧急的bug需要你去处理,这时,你就得把手头上的工作保存起来,然后去处理bug。

我们输入

git add .
git commit -m "wechat todo"

这样,我们就把在wechat分支上的工作进行了保存。

接下来,我们切换回master分支。

git checkout master

这时候,神奇的事情发生了,看看你的工作目录,刚才增加的内容现在却不见了。我们要的就是这个效果,接下来,我们再创建一个分支用于修复bug。

git branch ali

然后切换到ali分支

git checkout ali

在该分支下,我们进行一些操作,在工作目录中创建一个文件,然后随意编写一些内容。



假设此时我们已经修复好了bug,那么我们就将修改的内容提交到该分支上,接下来就是将该分支合并到master分支上了。

我们先切换到master分支上,会发现我们刚才创建的文件在工作目录中消失了,然后我们输入

git merge ali

这是,在ali分支上进行的文件修改操作就都能在工作目录中被找到了。

这时候,我们又可以切回到wechat分支,进行我们刚才未完成的工作。当完成后,我们就可以将该条分支也合并到master分支上。

删除分支

git branch -d wechat

注意了,当我们在两个分支上修改了同一个内容时,在master分支上进行合并的时候,就会产生冲突,因为此时git无法确定你需要的是哪个版本的信息。



红色框线内的意思是说,编码config.txt,冲突(内容):config.txt中的合并冲突,自动合并失败;修复冲突,然后提交结果。我们看一下冲突的文件。



我们来解决一下冲突,如果我们对着三个值都需要的话,我们就直接把标记删了就行,如果哪个不需要,就把不需要的值删了,这里我就都留着了。



修改完成,我们重新提交一下就可以了。

最新文章

  1. 信息中心网络 ,Information-centric networking, ICN
  2. Mac无法写入移动硬盘
  3. PHP 常量
  4. ECMAScript数据类型
  5. 【基础知识】.Net基础加强10天
  6. 《精通移动app测试实战:技术、工具和案例》新书上市
  7. Extjs treePanel 后台Json的两种构建方法
  8. C语言100个经典算法
  9. Linux内存管理之地址映射
  10. ubuntu设置vim语法高亮显示和自动缩进
  11. javascript oo实现(转)
  12. CFileDialog 打开文件夹文件 保存文件夹文件
  13. Integral Promotions整数提升和符号扩展(char,unsigned char,signed char)
  14. Nlog配置文件
  15. scikit_learn入门
  16. mysql 远程连接配置
  17. Nginx负载均衡后端健康检查
  18. Centos安装Grafana
  19. 图形数据库Neo4j基本了解
  20. 分布式日志框架之ExceptionLess【二】:自行搭建帮助文档【译文】

热门文章

  1. SSH框架之Spring第一篇
  2. SpringCloud(八):springcloud-bus消息总线(刷新配置服务)
  3. flex下省略号的问题解决
  4. Java 国际化标准程序实现
  5. Thymeleaf常用语法:表达式语法之运算符
  6. C# JsonConvert 序列号 DateTime类型 格式多T
  7. 安装pymssql
  8. java自定义函数调用
  9. 最小化MarkdownPad 2安装体积(win10)
  10. 设计模式-Facade(结构型模式) 针对 最终类的实现通过一系列类的相关操作,重点关注 起始与结尾的操作。