每次提交,GIT 都会将他们串成一个时间线,截止到目前,只有一个时间线,GIT里叫这个分支为主分支,叫master,HEAD指向master,master指向提交,HEAD指向当前的分支.

一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点

当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上:

Git创建一个分支很快,因为除了增加一个dev指针,改改HEAD的指向,工作区的文件都没有任何变化!

从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变:

假如我们在dev上的工作完成了,就可以把dev合并到master上。Git怎么合并呢?最简单的方法,就是直接把master指向dev的当前提交,就完成了合并:

所以Git合并分支也很快!就改改指针,工作区内容也不变!

合并完分支后,甚至可以删除dev分支。删除dev分支就是把dev指针给删掉,删掉后,我们就剩下了一条master分支:

我们创建dev分支,然后切换到dev分支:

git checkout -b dev      加上-b参数表示创建并切换,相当于以下两条命令

git branch dev                    git checkout dev

修改工作区一个文件测试下,然后提交

git add test.txt

git commit -m "test"

再切回master:

git checkout master    会发现刚才修改的内容又回去了,没有发生变化,因为刚那个提交是在dev分支上,master分支此刻的提交并没有变:

合并分支到master

首先要切换到master,再执行git merge dev命令,然后就可以删除dev分支了,git branch -d dev

推送本地新建的分支到远程仓库
```

git push origin 本地分支名:远程分支名

```

从远程拉取新的分支到本地

```

git checkout -b 本地分支名 origin/远程分支名

```

删除分支推向远程

```

git push origin --delete 分支名

```

git 分支的创建和切换的更多相关文章

  1. git 分支的创建、合并、删除

          基本概念与命令 分支(branch):每次提交,Git都把提交的内容串成一条时间线,这条时间线就是一个分支 .   git 分支的创建 git branch branchName git ...

  2. git 查看、创建、切换、删除、重命名和推送分支

    1.查看本地所有分支:前面有 “*” 的是当前所处的分支 $ git branch test-A * test-B 2.查看本地和远程服务器的所有分支: $ git branch -a test-A ...

  3. git分支的创建、删除、切换、合并

    需求背景 开发新功能和修改bug一般放在新建分支,如果觉得可行,可以合并到master分支上. 方式 1.查看分支 git branch (查看本地分支及当前所属分支) git branch -a ( ...

  4. git分支合并创建切换

    1. 场景描述 介绍下Git最新内容合并到主干.从主干创建最新分支.idea下切换最新分支,能在2分钟内完成git合并.分支创建以及在idea中完成切换,希望能帮到一些朋友. 2. 解决方案 从以下三 ...

  5. 4.Git分支查看&创建&切换&合并

    查看分支 git branch -v # 查看分支,*代表当前所在的分支     创建分支 git branch hot-fix # 创建一个hot-fix分支,然后使用-v查看 # 可以看到除了ma ...

  6. git分支的创建与合并

    在git中提倡使用分支,这就涉及到了分支的创建和合并.在git中我们的每次提交类似于一个链表,按照时间顺序向下排列,大约画了一个图,每个小圆圈代表一次提交,在git中有有一个主分支master,我们新 ...

  7. Git 分支管理 创建与合并分支

    分支在实际中有什么用呢? 假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了. 如果等代码全部写完再一次提交, ...

  8. git 分支的创建与合并

    首先我们需要先创建一个新的dev分支,然后切换到dev分支: $ git checkout -b dev //命令语句 Switched to a new branch 'dev' //成功执行输出语 ...

  9. eclipse git 文件状态 及git分支的创建与合并与删除

    eclipse里面Git文件状态及图标展示   EGit会出现如下图标,其对应状态及意义如下:      1)忽略[ ignored ]:仓库认为该文件不存在(如bin目录,不需要关注).通过右键Te ...

随机推荐

  1. ArcGIS案例学习笔记3_1_地理配准案例_图面控制点

    ArcGIS案例学习笔记3_1_地理配准案例_图面控制点 计划时间:第3天上午 目的:地形图控制点配准 数据:地形图drg 无坐标: 步骤 1.查看地图标注 2. 地理配准,添加控制点 3.结果: 联 ...

  2. 吴裕雄 python 机器学习-NBYS(1)

    import numpy as np def loadDataSet(): postingList=[['my', 'dog', 'has', 'flea', 'problems', 'help', ...

  3. 修改php.ini 的timezone

    php运行模式有apache 和 cli模式 这里讲cli 模式的php.ini设置 1.查找php.ini位置 php -i | grep php.ini 这样是表示 要改的文件 在/etc/php ...

  4. C专家编程

    [C专家编程] 1.如果写了这样一条语句: if(3=i).那么编程器会发出“attempted assignment to literal(试图向常数赋值)”的错误信息. 所以将常量放置在==前央, ...

  5. 引用yml中自定义数据 静态引用和动态引用

    //静态 @Component public class LinusFile { public static String imageUrl; @Value("${web.uploadPat ...

  6. python网络编程之进程论

    标签(空格分隔): 进程 什么是进程: 进程:正在进行的一个过程或者说一个任务.而负责执行任务则是cpu; 进程与程序的区别: 程序仅仅只是一堆代码而已,而进程指的是程序的运行过程 注意: 需要强调的 ...

  7. python3获得命令行输入的参数

    外部直接执行python文件时,我们有时需要获得命令行的参数   获得命令行参数的两种方式   1.通过sys.argv sys.argv:获得一个参数列表,第一个值为文件名本身,通过sys.argv ...

  8. 复杂链表的复制(python)

    题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head.(注意,输出结果中请不要返回参数中的节点引用,否 ...

  9. Centos 7 下 LAMP 部署

    一.介绍 LAMP is a combination of operating system and open-source software stack. The acronym of LAMP i ...

  10. 排列组合或容斥原理 SPOJ - AMR11H

    题目链接: https://vjudge.net/contest/237052#problem/H 这里给你一串数字,让你计算同时拥有这串数字最大值和最小值的子集(连续)和子序列(可以不连续)的数量, ...