git高层命令(分支)
git branch :显示分支列表
git branch 分支名 :创建分支
git checkout 分支名 :切换分支
git log --oneline --decorate --graph --all :显示全部分支
git branch -d 分支名 :删除分支
git branch -D 分支名 :强制删除分支
git branch -v :查看每一个分支的最后一次提交
git branch 新分支名 对应哈希值 :新建一个新分支,并让新分支指向对应的提交对象

一,git分支概念

git 是版本控制工具,在一个团队中,每个人只是使用其中的一个分支。当你拿到一个分支,你还可以去拆分分支,因为你可以以此实现许多功能,每一个功能都可以开一个分支去操作。
这就意味着,可以把你个人的项目内容从开发主线中分离出来,以免影响开发主线。
例如,你已经写好了功能很稳定的一段代码,这时候需要新加一些功能,就没有必要冒险在原有代码上直接进行修改,而是可以基于原代码创建出一个新的分支,然后再修改之。

二,创建分支

我们项目的每一个版本都是一个提交对象,都只有哈希值暴露在外面,之前就说过,有一个外部的指针指向这个提交对象,这个指针就是新建分支时产生的。
当提交对象一直往前更新,这个指针也会一直跟着往前更新。

这个master是默认就有的分支,这叫主分支
当我们不断提交新版本的时候,这个master就会一直跟着我们走。那这么看来,分支不就是可以理解为给提交对象命名嘛。
即:
分支是指针,指向最新的提交对象

创建分支:git branch :为你创建一个可以移动的新指针。
例如:创建一个testing 分支,git branch testing 这会在当前所在的提交对象上创建一个指针。

就会发现这里多了一个指针:

但是此时head还是指向这个master主分支。要想切换成testing还需要:


此时,就指向这个testing了。
假如此时的master已经是稳定的代码了,而我想要新添加功能,那么就让master留在这个稳定的版本上,然后只在testing上进行修改。如果testing写得很差,就直接返回master,但若是写得好,就让master直接调到testing上来。
1,在testing分支中写代码:

2,有提交,说明head需要往前走:

由上图可以看出来,master留在之前的版本中,而head指向新分支(新的提交对象)

2.再修改代码:

可以看到,head始终指向最新创建的分支的最新的提交对象。

三,删除分支

需要注意的是,不能删除当前指针指向的那个分支,而应该先把指针指向欲保留的分支之后,再删除分支。
于是删除分支时,若此时当前指针指向欲删除分支,则先切换分支,再删除分支。

2-1,当前指针指向testing分支,而我恰好需要删除testing分支。则先把指针指向tmaster分支。

此时,共有两个分支,当前指针已经指向主分支master了。
而注意到此时git log --oneline只是显示主分支,没有显示全部了,如果想要全部分支显示出来:

2-2删除不要的分支:
git branch -d 分支名

注意到,第一次用d删除时,因为testing里面有多个版本,没有被合并,所以不让删除,需要用D来强制删除。
2-3 查看每一个分支的最后以此提交:

这两个功能都可以看。
2-4 新建一个分支,并使分支指向对应的提交对象
git branch 新分支名 对应哈希值

例如说我现在想要把v2创建成一个新的分支:

需要注意的是,此时创建的新分支仅仅是指向了对应的 提交对象,而当前的指针实际并未指向它。
现在再让指针切换过去:

查看文件的内容,会发现此时工作区中的文件,变成了v2版本的内容了:

再切换回去看看最新版本的文件内容:

也就是说,一旦指针指向哪个分支(指向哪个提交对象或者说是项目版本),工作区的文件内容会瞬间切换成那个版本。
也就是说,有了这种分支的机制,你想要看过往哪个版本的就可以在此版本上创建一个分支然后查看了,如果查看完毕,就可以让指针切回主分支,再删除这个创建的分支(不会删除对应版本的,放心)。

git学习笔记-(9-高层命令-分支基础)相关推荐

  1. Git学习笔记:常用命令总结

    本文根据廖雪峰的博客,记录下自己的学习笔记.主要记录常用的命令,包括仓库初始化.添加文件.提交修改.新建分支.内容暂存.分支管理.标签管理等内容. git是分布式版本控制系统. 首先是安装,从官网下载 ...

  2. git学习笔记(四)—— 分支管理

    一.创建与合并分支 git branch //查看分支 git branch <name> //创建分支 git checkout <name> //切换分支 git chec ...

  3. git——学习笔记(三)分支管理

    一.创建.合并分支 每次提交,git都往后走一格,串成一跳时间线,head指向的是分支,分支指向提交.master是主分支,dev是另一条分支,分支就像指针一样,合并.删除分支时,修改的都是指针,工作 ...

  4. Git 学习笔记(二)分支管理

    创建分支 git branch -- 显示所有分支,其中以 "*" 号开头的为当前活跃分支 git branch branch_name [old_branch or any_co ...

  5. Git学习笔记:分支管理3

    前言 在补习python的时候主要参考的是廖雪峰的教程Python教程,在学习完后准备完成期末作业时,遇到了一个技术难题,需要初步掌握git,因此开始了git的学习. 本教程参考廖雪峰的Git教程 G ...

  6. Git学习笔记:分支管理(2)

    前言 在补习python的时候主要参考的是廖雪峰的教程Python教程,在学习完后准备完成期末作业时,遇到了一个技术难题,需要初步掌握git,因此开始了git的学习. 本教程参考廖雪峰的Git教程 G ...

  7. Git学习笔记:分支管理(1)

    前言 在补习python的时候主要参考的是廖雪峰的教程Python教程,在学习完后准备完成期末作业时,遇到了一个技术难题,需要初步掌握git,因此开始了git的学习. 本教程参考廖雪峰的Git教程 G ...

  8. git学习笔记(全,附命令大全)

    git学习笔记(全) 注:本文参考自廖雪峰官网 下图来自Git Cheat Sheet侵删 git优点 Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上. Git跟踪并管理的是修改 ...

  9. Git 学习笔记:6 GitHub

    Git 学习笔记:6 GitHub 账户的 创建和配置 SSH访问 头像 邮件地址 两步验证 对项目做贡献 派生(fork)项目 GitHub 流程 创建合并请求 利用合并请求 合并请求的进阶用法 将 ...

  10. Git 学习笔记:5 分布式工作流程

    Git 学习笔记:5 分布式工作流程 分布式工作流程 集中式工作流 集成管理员工作流 司令官与副官工作流 工作流程总结 向一个项目贡献 提交准则 私有小型团队 John's Machine 私有管理团 ...

最新文章

  1. Go 学习笔记(70)— Go 变量声明、变量初始化、值类型变量赋值、指针类型变量赋值
  2. JQuery-学习笔记05【高级——JQuery动画和遍历】
  3. Hbase Interface HConnection
  4. Java面试之锁-公平锁和非公平锁
  5. require include php5中最新区别,百度上好多错的。
  6. 帆软实现单元格可编辑内容并保存
  7. bzoj 3504: [Cqoi2014]危桥(最大流)
  8. Spring boot中使用Jackson ObjectMapper注入
  9. Linux LVM的PV操作
  10. JTA分布式事务处理
  11. tomcat乱码怎么解决
  12. 继续教育自动听课软件_2017继续教育挂机软件下载
  13. IBM Think 2019核心议题:如何打造可信人工智能
  14. mysql嵌套查询实例_MySQL嵌套查询实例详解_MySQL
  15. 用于CFD的国内3D城市模型获取方法
  16. 记一篇IT培训日记061-班活动
  17. 使用 fitter 拟合数据分布
  18. DNS域传送漏洞--vulhub复现
  19. 怎样判断安装的mysql是社区版还是企业版
  20. mysql分组后,取每组第一条数据

热门文章

  1. 01--DNS服务器2
  2. 【English】20190430
  3. jenkins--master/slave模式---master是容器版---slave是非容器版
  4. 简单版WAF代码学习
  5. java ftl 模板 输出list_关于在freemarker模板中遍历数据模型ListJavaBean的经验
  6. 解决:本地计算机上的MySQL80服务启动后停止,某些服务在未由其他服务或者程序使用时将自动停止
  7. solr的索引库配置
  8. 聊聊并发编程中的10个坑
  9. Spring中的bean是否是线程安全的
  10. Alpine linux硬盘安装