似于SVN这种集中式版本管理,三年前刚来上海工作时候,在华为驻场上班,华为用的就是SVN,印象最深的就是那个小乌龟的图标;后来到外面工作,渐渐发现用Git的非常多,慢慢学习了解发现Git这种分布式的版本管理确实很好很强大,后面也就重点学习Git的分支管理策略了(其实SVN我现在压根就不会了,哈哈。。。)

centralized workflows

以Bitbucket的官方文档的实例作为简单介绍:例如Mary现在想要开发,在开发前她可以通过checkout命令建立一个新的分支:

Feature Branch Workflow: comit changesBefore she starts developing a feature, Mary needs an isolated branch to work on. She can request a new branch with the following command

git checkout -b marys-feature master

然后Mary可以在这个本地进行相关的更改:

git status git add git commit

接着她可以不断将本地修改上传至特性分支的中心仓库中,直到自己全完修改完成

git push -u origin marys-feature git push

然后,她在git gui(GitHub或GitLab等)中提交pull请求,请求将marys特性合并到master中,团队成员将自动收到通知。

Mary的同事Bill收到了pr,Bill觉得在合并到正式项目中之前还需要做一些修改,于是在pr的回复中对Mary进行告知,接着Mary继续修改开发,完成后再次提交pr:

一旦Bill准备接受pull request,有人需要将该特征merge到稳定的项目中(这可以由Bill或Mary来完成)

git checkout master git pull git pull origin marys-feature git push

在GitHub上进行基本的演示(实际工作中,公司用的还是GitLab较多,后面会有总结演示)1.1) 先使用git checkout -b命令来创建一个新的分支并切换到此分支中去,用git branch命令可查看当前所处分支:

$ git checkout -b gitTestBranch Switched to a new branch ‘gitTestBranch’ $ git branch * gitTestBranch master

1.2) 将readme.txt文件最后一行加入如下内容并commit

I am a test engineer. I want to study Git. branch gitTestBranch update

1.3) push到远程仓库并查看分支,首次push需要用git push -u 或git push --set-upstream 命令设置上下游的关联关系:

在GitHub上查看master分支和gitTestBranch分支的对比,可见gitTestBranch已成功push:master:

gitTestBranch:

1.4) 使用git log --graph --all --decorate=short命令可以查看提交的分支走向,如果分支较多的话就会出现如下效果:

1.5)这个时候我们可以通过pr对分支进行merge:发起pr

没有conflict,可以直接merge

这个时候再看master分支,就已经被成功合并了

2.1) 先在readme.txt文件中加入一行branch gitTestBranch update2,然后提交到远程分支中:

I am a test engineer. I want to study Git. branch gitTestBranch update1 branch gitTestBranch update2 git commit -a -m “gitTestBranch second update” git push

2.2)通过fetch将gitTestBranch分支拿下来到本地,修改本地文件并合并修改本地gitTestBranch分支,修改加入“branch gitTestBranch update3”并提交到远程分支

vi readme.txt I am a test engineer. I want to study Git. branch gitTestBranch update1 branch gitTestBranch update2 branch gitTestBranch update3 $ git commit -a -m “third update” $ git push

2.3)master分支上fetch拿取远程gitTestBranch分支,修改冲突,合并提交

$ git checkout master $ git fetch origin gitTestBranch $ git merge origin/gitTestBranch # fix conflict $ git commit -a -m “fix conflict” $ git push

2.4)这时候在GitHub上进行查看:commit历史中可见提交记录:

检查master,发现已经被成功合并

软件测试 | 测试开发 | Git分支管理搞定在线合并和本地合并相关推荐

  1. 软件测试 | 测试开发 | 30 分钟轻松搞定正则表达式基础

    提起正则表达式,可能大家的第一印象是:既强大好用但也晦涩难懂.正则表达式在文本处理中相当重要,各大编程语言中均有支持(跟 Linux 三剑客结合更是神兵利器). 正则表达式是对字符串操作的一种逻辑公式 ...

  2. Git学习总结(12)——多人开发 Git 分支管理详解

    1.前言 在上一篇博客中我们主要讲解了Git 远程仓库,相信大家对远程的Git仓库有一定的了解,嘿嘿.在这一篇博客中我们来在大家讲解一下Git 分支管理,这可以说是Git的又一大特点.下面我们就来学习 ...

  3. 多人开发 Git 分支管理详解

    注,测试机 CentOS 5.5 x86_64,Git 服务器版本:git version 1.8.2.1,客户端版本:git version 1.9.2.msysgit.0.所有软件请到这里下载:h ...

  4. 软件测试 | 测试开发 | Git实战(四)| Git分支管理实操,搞定在线合并和本地合并

    类似于SVN这种集中式版本管理,三年前刚来上海工作时候,在华为驻场上班,华为用的就是SVN,印象最深的就是那个小乌龟的图标:后来到外面工作,渐渐发现用Git的非常多,慢慢学习了解发现Git这种分布式的 ...

  5. 软件测试 | 测试开发 | Git实战(四)| Git分支管理实操,在线合并和本地合并

    类似于SVN这种集中式版本管理,三年前刚来上海工作时候,在华为驻场上班,华为用的就是SVN,印象最深的就是那个小乌龟的图标:后来到外面工作,渐渐发现用Git的非常多,慢慢学习了解发现Git这种分布式的 ...

  6. 测试开发基础|一文搞定计算机网络(一)

    计算机网络知识对测试人员来说是非常重要的基础技能.无论是在平时测试工作中(比如接口测试),还是测试技术面试时,都会经常涉猎.很多基础薄弱的同学靠临时抱佛脚突击搜索学习,对系统知识和重点难点的理解总是不 ...

  7. 软件测试 | 测试开发 | 测试开发基础|一文搞定计算机网络(一)

    计算机网络知识对测试人员来说是非常重要的基础技能.无论是在平时测试工作中(比如接口测试),还是测试技术面试时,都会经常涉猎.很多基础薄弱的同学靠临时抱佛脚突击搜索学习,对系统知识和重点难点的理解总是不 ...

  8. Git 分支管理 Feature分支 强行删除分支

    软件开发中,总有无穷无尽的新的功能要不断添加进来. 添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了, 所以,每添加一个新功能,最好新建一个feature分支, 在上面开发,完成后 ...

  9. git分支管理规范和gitee上分支开发

    git分支管理规范 分支开发图示: 初始化仓库 git init 初始化master vim Readme.md git add . git commit -m "init" 创建 ...

最新文章

  1. 解决: AOSP 编译AndroidQ preview 失败
  2. Apache Mina开发手册
  3. C# Lambda表达式详解,及Lambda表达式树的创建
  4. MySQL里面的in关键字
  5. html怎么填充颜色渐变,CSS实现不规则图形,填充渐变色
  6. Openstack(二)基本环境准备--网络、时间、yum源等
  7. 5999元!OPPO Find X5 Pro 8+256GB版今日首销
  8. python进阶05并发之一基本概念
  9. 移远EC600S-CN (3) - HTTP(S)应用GET请求POST请求,HTTP接入OneNET物联网云平台
  10. hdoj--2094--产生冠军(集合函数)
  11. iOS:简单使用UIAlertVIew和UIActionSheet
  12. 韩国被申遗 (转自果壳)
  13. 南邮JAVA程序设计实验3 流处理程序设计
  14. 计算机科学与技术的学习路线
  15. [06]项目实战-移动端流体布局
  16. 我在Slager上的LaTeX排版之路|空格命令(连载)
  17. 洛谷----P3717 [AHOI2017初中组]cover
  18. linux计划任务5个*分表代表什么,Linux定时任务Crontab命令
  19. python数据清洗工具、方法、过程整理归纳(六、数据清洗之数据预处理(一)——重复值处理、缺失值处理)
  20. iphone 的文件目录和简单介绍

热门文章

  1. 微信抢票应用开发总结
  2. 服务器未响应wan口连接失败,路由器WAN口连接失败如何解决 路由器WAN口连接失败解决方法【详解】...
  3. Java修改图片分辨率(附代码) | Java工具类
  4. 代理服务是个什么东西?
  5. 什么是动态代理,动态代理的应用有哪些
  6. 反向传播不香了?解读 Hinton 大佬的 Forward-Forward 算法
  7. 清华大学NLP实验室刘知远教授组与华为合作招聘博士后
  8. 听了让人心静的纯音乐
  9. HTML文本域添加滑杆,Objective-C 自定义UISlider滑杆 分段样式
  10. Redis Scard 命令