Git 分支管理及结合gitlab的使用

  1. 说明
    有关gitlab的说明及基本操作,请参考:https://blog.51cto.com/wutengfei/2090253
    使用git分支的作用,我们先来说一个简单的案例吧,你们团队中有多个人在开发一项目,一同事在开发一个新的功能,需要一周时间完成,他写了其中的30%还没有写完,如果他提交了这个版本,那么团队中的其它人就不能继续开发了。但是等到他全部写完再全部提交,大家又看不到他的开发进度,也不能继续干活,这如何是好呢?
    对于上面的这个问题,我们就可以用分支管理的办法来解决,一同事开发新功能他可以创建一个属于他自己的分支,其它同事暂时看不到,继续在开发分支(一般都有多个分支)上干活,他在自己的分支上干活,等他全部开发完成,再一次性的合并到开发分支上,这样我们既可知道他的开发进度,又不影响大家干活,是不是很方便呢?
    在这里说明下:svn也可以实现上面所说的功能,但Git呢,无论你创建还是切换或者删除都很快哦!
  2. 分支的本质
    分支本质上其实就是一个指向某次提交的可变指针。Git 的默认分支名字为 master 。而我们是怎么知道当前处于哪个分支当中呢?答案就是在于 HEAD 这个十分特殊的指针,它专门用于指向于本地分支中的当前分支。我们可以简单理解为:commit <- branch <- HEAD (注,简单的说HEAD就是指向于本地分支中的当前分支) ,如图所示:

    说明:上图中的dev指的是git的一个分支。
  3. 创建分支
    当我们需要调试某个Bug或者尝试添加或修改程序中的某个模块,而又不能影响主分支的开发时。就可以通过创建分支来满足需求。创建分支相当于是创建一个新的分支指针指向当前所在的提交。我们在Commit3上创建dev分支:
    ##创建dev分支前,我们先查看下当前分支情况
    git branch -a
    \* master
    remotes/origin/master
    ##创建dev分支
    git branch dev
    ##查看当前分支
    git branch -a
    dev
    \* master
    remotes/origin/master
  4. 切换分支
    从上面操作可知,虽然我们创建了一个新分支,但是 HEAD 仍然指向 master 。如果希望在创建分支的同时切换到新分支上,我们可以通过以下命令实现:
    git checkout dev
    Switched to branch 'dev'
    git branch -a
    \* dev
    master
    remotes/origin/master
    ##说明:git checkout命令加上-b参数表示创建并切换分支上。

    git branch -a 命令可以查看所有分支,现在我们HEAD指针便指向dev分支,大家可以在上图中看到dev分支上有个*号。如下图所示:

  5. 分支文件提交
    ##我们现在在dev分支上
    echo "this is a test" > shiyan.txt
    git add shiyan.txt
    git commit -m "add a file shiyan"
    [dev 0e7aa94] add a file shiyan
    1 file changed, 1 insertion(+)
    git push
    fatal: The current branch dev has no upstream branch.
    To push the current branch and set the remote as upstream, use:git push --set-upstream origin dev
    git push --set-upstream origin dev

    用流程图演示上述过程如下:

    现在我们在dev分支上完成工作。

    ##查看下dev分支上的文件
    ls
    shiyan.txt
    ##切换到master分支
    git checkout master
    ##查看master分支上的文件
    ls
    ##并没有shiyan.txt这个文件,我们登入到gitlab上看一下,在dev分支上存在shiyan.txt这个文件。
    ##原因:因为那个提交是在dev分支上,而master分支没有变化。
  6. 合并分支(快速合并)
    现在,我们把dev分支的工作成果合并到master分支上,操作如下:
    ##在master分支上进行操作
    git checkout master
    git merge dev
    Updating 602d921..f6f8543
    Fast-forward
    shiyan.txt | 1 +
    1 files changed, 1 insertion(+)
    create mode 100644 shiyan.txt
    ##git merge 命令用于合并指定分支到当前分支。合并后,再查看shiyan.txt的内容,就可以看到,和dev分支的最新提交是完全一样的。
    ls
    shiyan.txt
    ##说明:
    (1)上面的Fast-forward信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。当然,也不是每次合并都能Fast-forward,我们后面会将其他方式的合并。合并完成后,就可以放心地删除dev分支了。
    (2)在gitlab上可以看到master分支里已经存在shiyan.txt。
  7. 删除分支
    ##在master分支上进行操作
    git checkout master
    git branch -d dev
    Deleted branch dev (was f6f8543).
    ##查看当前分支情况
    git branch -a
    \* master
    remotes/origin/dev
    remotes/origin/master
  8. 命令总结
    ##查看分支
    git branch -a
    ##创建分支
    git branch name
    ##切换分支
    git checkout name
    ##创建并切换
    git checkout -b name
    ##合并某分支到当前分支
    git merge name
    ##删除分支
    git branch -d name

git分支相关的命令的更多相关文章

  1. Git -- 分支与合并 (命令行+可视化工具p4merge)

    基本命令 把所有的变化都放在master分支并不是最好的做法. 建议的做法是把变化放在分支里面. 至少应该准备一个feature分支之类的, 把变化都隔离开来, 然后等到所有的功能都稳定之后再合并到m ...

  2. GIT分支操作常用命令

    切换分支:git checkout name 撤销修改:git checkout -- file 删除文件:git rm file 查看状态:git status 添加记录:git add file ...

  3. git分支更新代码命令

    第一步: 查看状态  git status 第二步: 全部添加  git add --all 第三步: 再次查看状态  git status 第四步: 提交      git commit -m '备 ...

  4. git 分支相关操作

    git status  查看当前工作区 会显示分支 如下 D:\工程\vue_study\testplat_vue>git statusOn branch masternothing to co ...

  5. Git 分支相关

    创建分支 git branch dev 切换分支 git checkout dev (dev换成-可切换为上一个使用的分支) 以上两个可合并为 git checkout -b dev 将新分支推送到远 ...

  6. Git分支及其协同开发

    目录 Git分支 Git是如何保存数据的 Git分支的本质 Git分支的操作 远程仓库与本地仓库分支开发 一个项目多个远程仓库 远程仓库操作命令 协同开发 Git flow工作流 GitLub安装搭建 ...

  7. 02: git分支管理

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

  8. Git知识总览(四) git分支管理之rebase 以及 cherry-pick相关操作

    上篇博客聊了<Git知识总览(三) 分支的创建.删除.切换.合并以及冲突解决>,本篇博客我们主要来看一下 rebase 变基相关的操作.rebase 操作和 merge 操作最终都可以达到 ...

  9. 尚硅谷面试第一季-13git分支相关命令

    课堂重点:分支相关命令 实际应用-工作流程 实操命令及运行结果: 创建master分支并提交 git init git add . git commit -m "V1.0" git ...

随机推荐

  1. PAT(B) 1035 插入与归并(Java)

    题目链接:1035 插入与归并 (25 point(s)) 参考博客:PAT乙级--1035(插入排序和归并)java实现熊仙森 题目描述 根据维基百科的定义: 插入排序是迭代算法,逐一获得输入数据, ...

  2. ASP.NET MVC请求参数字符串之区分空与NULL

    开发中经常会写增删改查的功能,这里记录下在更新操作时遇到的一个问题. 假设一个模型对应数据库中某一张表,在更新时便需要区分是一次性更新全部字段还是仅更新部分字段.希望能做到传递某个参数时便更新,未传递 ...

  3. logrus 剖析之 formatter

    使用 logrus 通过 formatter 来定义输出日志的格式,具体例子如下: package main import ( log "github.com/Sirupsen/logrus ...

  4. 【scratch3.0教程】1.1 走进编程世界

    第一章 认识Scratch 第1课   走进编程世界 大家认识下图中的人物吗? 史蒂夫·乔布斯             比尔·盖茨 ●Elon Musk,特斯拉.Space X火箭公司创始人,9岁学习 ...

  5. Roads in the Kingdom CodeForces - 835F (直径)

    大意: 给定一个基环树, 求删除一条环上的边使得直径最小. 直径分两种情况 环上点延伸的树内的直径 两个环上点的树内深度最大的点匹配 第一种情况直接树形dp求一下, 第二种情况枚举删除的环边, 线段树 ...

  6. Linux 用户管理命令笔记

    1.新增用户 useradd user1 用户创建流程 1.系统先将用户信息记录在/etc/passwd中,一般会在/etc/passwd和/etc/shadow末尾,同时分配该用户UID. 2.创建 ...

  7. C盘清理、C盘瘦身、省出30G

    三招C盘瘦身30G,清理win10系统中虚占C盘空间的三大祸害 1.对C盘进行“磁盘清理” C盘右键->属性->磁盘清理->清理系统文件->勾选“windows更新清理”-&g ...

  8. 父元素设置min-height子元素设置100%问题

    问题:父元素设置min-height子元素高度设置100%取不到值,这是因为子元素 div设置 height:100%: 只有当父级元素满足min-height:1000px;设置的条件才触发: 浏览 ...

  9. 易百教程人工智能python修正-人工智能监督学习(分类)

    分类技术或模型试图从观测值中得出一些结论. 在分类问题中,我们有分类输出,如“黑色”或“白色”或“教学”和“非教学”. 在构建分类模型时,需要有包含数据点和相应标签的训练数据集. 例如,如果想检查图像 ...

  10. Unity3d与iOS交互开发

    一.Unity3d  To  iOS: 最近要做一个商品和人体模型T台秀相关的功能,要用到Unity3D,搜集了一些资料先保存下来. 1.创建一个C#文件 SdkToIOS.cs 这是调用iOS函数的 ...