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

网站已有支付宝在线支付功能,要添加"微信支付",修改了两个文件,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中的合并冲突,自动合并失败;修复冲突,然后提交结果。我们看一下冲突的文件。



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



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

版本管理·玩转git(分支管理)的更多相关文章

  1. Git工程开发实践(四)——Git分支管理策略

    A successful Git branching model https://nvie.com/posts/a-successful-git-branching-model/ Git工程开发实践( ...

  2. GIT分支管理模型

    GIT分支管理模型 link: git-branching-model 主分支(Main branches) 项目两个常驻分支: master 主干分支(锁定),仅用于发布新版本,平时不能在上面干活, ...

  3. Git 分支管理是一门艺术

    转载: Git 分支管理是一门艺术 1 要确保:团队成员从主分支(master)获得的都是处于可发布状态的代码,而从开发分支(develop)应该总能够获得最新开发进展的代码. 2 "辅助分 ...

  4. Git 分支管理详解

    大纲: 1.前言 2.创建分支 3.切换分支 4.合并分支(快速合并) 5.删除分支 6.分支合并冲突 7.合并分支(普通合并) 8.分支管理策略 9.团队多人开发协作 10.总结 注,测试机 Cen ...

  5. Git分支管理[三]

    标签(linux): git 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 git分支管理命令 git branch #创建分支 git branch -v # ...

  6. Git—分支管理

    Git—分支管理 分支学习:branch称为分支,默认仅有一个名为master的分支.一般开发新功能流程为:开发新功能时会在分支dev上进行,开发完毕后再合并到master分支. branch相关常用 ...

  7. [转载]理解 Git 分支管理最佳实践

    原文 理解 Git 分支管理最佳实践 Git 分支有哪些 在进行分支管理讲解之前,我们先来对分支进行一个简单的分类,并明确每一类分支的用途. 分支分类 根据生命周期区分 主分支:master,deve ...

  8. 02: git分支管理

    目录:GIT其他篇 01: git & github 02: git分支管理 目录: 1.1 Git常用命令 1.2 主要分支(保护分支) 1.3 特性分支:feature (开发分支合并到d ...

  9. git 分支管理——多人协作

    git 分支管理--多人协作 一般一个项目有一个master主分支,还有一个develop开发分支.主要是在develop分支上协作开发,然后merge合并到master主分支上. 当从远程仓库克隆时 ...

随机推荐

  1. JavaScript的概念,引入,基本数据类型

    08.05自我总结 JavaScript 一.概念 JavaScript(下文我们会用简称JS来代替)是脚本编程语言,JS语言开发的文件是以.js为后缀,通过在html文件中引入该js文件来控制htm ...

  2. 面试再问ThreadLocal,别说你不会

    转载自:公众号<Java知音> ThreadLocal是什么 以前面试的时候问到ThreadLocal总是一脸懵逼,只知道有这个哥们,不了解他是用来做什么的,更不清楚他的原理了.表面上看他 ...

  3. C#中 EF 性能优化

    https://www.cnblogs.com/chenwolong/p/7531955.html EF使用AsNoTracking(),无跟踪查询技术(查询出来的数据不可以修改,如果你做了修改,你会 ...

  4. JavaWeb开发——软件国际化(文本元素国际化)

    前几天围绕着JDBC编程进行了系统的学习.现在我们对Java程序数据库操作已经是轻车熟路了.也学会了使用各种框架来帮助我们简化编程. 今天是学习计划的第七天,虽然学习热情没有前几天高涨了.但是,写博客 ...

  5. Word List

     周一考试了,单单单词查不完了,只好随便整理一下了

  6. Flutter中通过https post Json接收Json

    Flutter 已然成为炙手可热前端框架.若问跨平台到底有多香,自然是要多香有多香.今天我就分享这些天研究Flutter http连接和json格式转换的内容,小弟对Flutter也是小白一名,如有错 ...

  7. Oracle查看表结构

    目的:通过SQL进行查看表结构,因为使用PL/SQL连接工具,连接到公司的数据库上经常断开.故改为使用Navicat连接数据库,个人觉得这个查看表结构很困难. 查看表结构和约束精简 -- 查询指定表的 ...

  8. Python添加邮件附件并通过邮件发送测试报告

    import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText c ...

  9. 2019中国大学生程序设计竞赛(CCPC) - 网络选拔赛

    传送门 A.^&^ 题意: 找到最小的正数\(C\),满足\((A\ xor\ C)\&(B\ xor \ C)\)最小. 思路: 输出\(A\&B\)即可,特判答案为0的情况 ...

  10. LINUX上安装JDK+tomcat+mysql操作笔记

    1.环境准备: 1-1.centos 64位(本人的虚拟机安装此系统),安装步骤和网络配置已经在前两篇记录. 1-2.JDK 版本1.8 1-3.tomcat压缩包 1-4.CRT远程连接工具(可用其 ...