分支就是一条独立的时间线,既有分支,必有主干,正如一棵树谈到树枝,必有树干一样的道理.我们先前对git 的全部操作默认都是在主干上进行的,这个主干也是一种特殊的分支,名为 master 分支.

无论是穿越历史还是撤销更改,我们都或多或少接触过时间线,git 管理的版本串在一起就组成了这个时间线,其中master 分支是当前分支,HEAD 指向master ,因此HEAD 相当于指向了最新的版本.

git-commit.gif

基于分支上的操作,每一次 commit 都会提交一个新版本,并且新的 commit 指向原来的 commit,这来最新的 commit 就可以往前找,直到找到最初的commit.这就是 git 的时间线.

当我们打算开辟新的时间线时,git 在当前 HEAD 指向的 master 分支的 commit处新建一个 dev 分支.如果主角没有主动进入时间线的话,那么仍然处于 master分支,进入的方法就是 HEAD指向新建的 dev 分支.

不考虑孙悟空的分身特效,主角不能同时处于不同的时空下,git 也是如何,HEAD只能指向某一个 commit ,既然刚刚已经指向了 dev 分支,所以原来的 master 分支就没有 HEAD 了,因为相当于master 分支静止了.

当主角在 dev 分支独自闯荡干出一番事业时,决定回到故乡 master 分支,并将出门在外所学的本领带回家乡,建设美好家园.master 分支因为合并了 dev 分支,所以一下子增添了很多内容,家乡焕然一新!

主角这次携带 dev 分支归来,HEAD 分支自然又回到了 master 分支上,年轻的心向往外面的世间,相信不久后还会有同样的故事发生...

git-branch.gif

下面详解分支相关命令

创建分支

创建 dev 分支,列出分支已验证是否创建成功

创建dev 分支

master 前面的 * 标记表明当前仍然处于 master 分支

git-on-master.png

切换分支

切换到新分支以便在分支上开展工作

切换到 dev分支

git-on-dev.png

现在,我们在 dev 分支上奋笔疾书,先后提交两个版本后完成分支开发工作:

git-on-dev-commit1.png

git-on-dev-commit2.png

此时,再从 dev 分支切换回 master 分支,合并dev分支前看一下当前文件内容:

切换回 master 分支

git-checkout-master.png

合并分支

切换回 master 分支并没有我们在 dev 分支的更改,因为两条时间线是独立的,现在合并 dev 分支,再看一下当前文件内容:

合并 dev 分支

git-merge-dev.png

删除分支

合并分支后,dev 分支的历史使命已经完成,应该及时清空不必要分支.

git-branch-d-dev.png

以上场景包括了分支的常用操作,创建分支(git branch ),切换分支(git checkout ),删除分支(git branch -d )一系列操作十分流畅,因此 git鼓励我们大量使用分支!

小结

  • 列出分支 git branch
  • 创建分支 git branch
  • 切换分支 git checkout
  • 创建并切换分支 git checkout -b
  • 合并指定分支到当前分支 git merge
  • 删除分支 git branch -d

git 切换分支_git 入门教程之分支总览相关推荐

  1. git 怎么备份本地分支_git 入门教程之协同开发

    前面我们已经介绍过远程仓库的相关概念,不过那时并没有深入探讨,只是讲解了如何创建远程仓库以及推送最新工作成果到远程仓库,实际上远程仓库对于团队协同开发很重要,不仅仅是团队协同开发的基础,也是代码备份的 ...

  2. 拉取远程分支_git使用教程之创建本地库并关联远程库(笔记整理篇一)

    笔者个人博客: https://qiucode.cn/blog  微信小程序  [秋码淘好货] 好久没写文章了,本篇文章笔者就来讲讲什么是Git版本控制系统的使用教程. SVN与Git的最主要的区别 ...

  3. 小乌龟git如何同步远程分支_git同步远程仓库分支

    git命令 1.何谓同步远程分支?有下面几种情况, 1.本地有新分支,远程仓库没有. 2.远程仓库有新分支,本地没有. 3.本地删除了分支,远程也想删除. 4.远程删除了分支,本地也想删除. 第一种情 ...

  4. Git版本控制使用方法入门教程?

    考虑到CVS的一些局限性,最近和同事在公司推行Git.     其实,如果推行SVN的化,可能推行的难度会降低很多.不过lark说既然推行一个新的版本管理工具,总要花费一定的时间进行培训.部署.转换. ...

  5. git checkout远程分支_Git检出远程分支

    如果贡献者有自己的 Git 仓库,并将修改推送到此仓库中,那么当你拿到仓库的访问地址和对应分支的名称后,就可以加为远程分支,然后在本地进行合并. 比如,Jessica 发来一封邮件,说在她代码库中的  ...

  6. git rebase用法_Git入门实战

    如果给所有软件列出一个排行榜的话,那么Git定会名列前茅.Git对于代码项目的管理是具有划时代意义的,向Linus致敬,不但写出了可以与Windows争锋的Linux系统,还设计实现了如此强大的版本管 ...

  7. 将当前的head推送到远程_git 入门教程之远程仓库

    如果说本地仓库已经足够个人进行版本控制了,那么远程仓库则使多人合作开发成为可能. 如果你只是打算自己使用git,你的工作内容不需要发布给其他人看,那就用不到远程仓库的概念. git 是分布式版本控制系 ...

  8. java教程分支_Java小白入门教程(5)——分支语句

    原标题:Java小白入门教程(5)--分支语句 提纲: 1.程序的流程结构 2.选择结构 3.if语句 4.switch-case语句 5.作业 一.程序的流程结构 程序的流程结构 程序的流程结构: ...

  9. ESP32-C3入门教程——导读

    文章目录 一.环境篇 二.基础篇 三.系统篇 四.WiFi篇 五.蓝牙篇 六.网络篇 七.IoT篇 八.问题篇 九.开源代码 十.视频演示 关于更新进度 有超链接的文章是已经完成的,可以点击跳转直接看 ...

最新文章

  1. 中断原理在计算机中的应用,计算机组成原理期末考试简答题重点
  2. 研究SLAM,对编程的要求有多高?
  3. php打印从1到1000,输入一个链表的头节点,从尾到头打印每个节点的值,利用PHP如何实现?...
  4. 上海交大发布「人类行为理解引擎」:深度学习+符号推理,AI逐帧理解大片中每个动作...
  5. 客服机器人源码_快速搭建对话机器人,就用这一招!
  6. Spring boot(十二):Spring boot 如何测试、打包、部署
  7. 翻翻看 类型html5,3款容易上手的HTML5编辑工具推荐~
  8. 程序包android.support.annotation不存在_efcore技巧贴也许有你不知道的使用技巧
  9. 苹果的困境源于优质移动应用的垮台吗?
  10. linux tcp fast open,linux开启tcp fast open/tfo并测试
  11. 开发竞赛作品展示网站上线!
  12. 计算机操作系统笔记总结:Part1 计算机系统概述
  13. 对象存储oss挂载工具ossfs的使用
  14. java安装完后桌面怎么没有快捷方式_关于Eclipse在文件夹可以打开,在桌面建立快捷方式却无法打开的问题...
  15. 又拍网架构中的数据库分库设计
  16. MySQL本天早上8点到明早8点_早上8点是什么时辰
  17. 词向量与词向量拼接_nlp中的词向量对比:word2vec/glove/fastText/elmo/GPT/bert
  18. python程序采用unicode编码、英文字符_python--基础字符编码
  19. 四大垃圾回收算法七大垃圾回收器
  20. 政务云市场开启“狂飙”:一项前三,两项跃升!

热门文章

  1. caas k8s主控节点如何查询_k8s--04 部署harbor作为k8s镜像仓库
  2. libreoffice error while loading shared libraries: libSM.so.6: cannot open shared object
  3. VS Code 直接跳到下一行编辑快捷键
  4. shell脚本触发java程序传参数
  5. vsftpd:500 OOPS: vsftpd: refusing to run with writable root inside chroot ()错误的解决方法
  6. Vue封装预约日期插件和发布到npm上
  7. docker安装linux安装mysql_怎么启动mysql-linux 怎么安装mysql?怎么在docker搭建mysql8?docker安装mysql...
  8. C++实现单链表的反序
  9. qt程序运行时绘图出现错误
  10. BugkuCTF-Reverse题逆向入门