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

网站已有支付宝在线支付功能,要添加"微信支付",修改了两个文件,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. 利用 python 分析基金,合理分析数据让赚钱赢在起跑线!

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 白玉无冰 PS:如有需要Python学习资料的小伙伴可以加点击下方 ...

  2. JS基础语法---Math对象的案例

    系统Max求最大值: var result= Math.max(10,20,30,40); console.log(result); 练习1:自己定义一个对象,实现系统的max的方法   //例子:自 ...

  3. UI视图控件、视图嵌套、SubView、Tag 的使用

    - (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchO ...

  4. smobiler自适应不同手机分辨率

    在smobiler中可以通过相对布局或者绝对布局实现自适应不同手机分辨率. 例如实现下图中的布局,图中的布局实际可以分成3个部分,部分1可以使用Title控件,部分2可以使用Panel(在Panel中 ...

  5. 一文解读MVC/MVP/MVVM (转)

    这篇文章对目前 GUI 应用中的 MVC.MVP 和 MVVM 架构模式进行详细地介绍. MVC 在整个 GUI 编程领域,MVC 已经拥有将近 50 年的历史了.早在几十年前,Smalltalk-7 ...

  6. Saltstack_使用指南14_无master

    1. 主机规划 salt 版本 [root@salt100 ~]# salt --version salt (Oxygen) [root@salt100 ~]# salt-minion --versi ...

  7. 微信小程序如何做金额输入限制

    引言:金额输入时,需求如下: 1)首位不能出现0或者小数点(.) 2)仅保留两位小数 3)仅保留一个小数点(.),不允许出现多个. 1.wxml核心代码: <!-- 1.adjust-posit ...

  8. How To Determine The Cause Of Lots Of Redo Generation Using LogMiner (Doc ID 300395.1)

    How To Determine The Cause Of Lots Of Redo Generation Using LogMiner (Doc ID 300395.1) APPLIES TO: O ...

  9. leetcode——动态规划

    立志要熟练动态规划,加油! 最长回文子串给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 思路:设dp[l][r]表示s[l……r]是否回文,枚举右边界r,然后 ...

  10. requests---requests上传图片

    我们在做接口测试的时候肯定会遇到一些上传图片,然后进行校验,今天我们一起学习通过requests上传图片,查看是否上传成功 抓取上传接口 这里我以百度为例子进行操作,为啥要用百度呢,主要上传文件比较简 ...