Git - 08. git branch
概述
- 简单描述以下, git branch
- 讲解的目的, 只是方便新手入门, 基本都是最简单的操作
- 所以东西可能不全
- 一是 我不理解
- 二是 有的东西出现, 可能会让新手产生误解
- 所以东西可能不全
准备
- os
- win10
- git
- 2.20.1.windows.1
- 工程
- 一个 git 项目的工程 即可
- os
1. 分支
概述
- 简单介绍分支
分支
概述
- 一种方法
- 一个代码版本
方法
软件开发的基本方法
- 从 主线 分离出来的一条 独立的开发先
特性
- 隔离
- 分支可以让主线不受到干扰
- 分支也可以保存一个相对稳定的版本, 方便继续修正, 而不影响主线
- 隔离
使用
- 隔离特性
- 防止新特性, 干扰到主线
- 隔离 bug
- 一些不太好解的 bug, 也可以使用 分支, 隔离出来
- 隔离 版本
- 可以专门拉一个旧版本的分支, 在这个分支上修改, 并且不影响新版本
- 隔离 阶段
- 可以使用不同的分支, 代表 开发, 测试, 线上版本
- 隔离特性
副作用
- 并行开发
- 既然都隔离得那么开了, 并行工作, 就是自然而然的事了
- 并行开发
代码版本
- 创建分支后, 获得的 代码产物
感觉
分支本质上是一种思想
- 目的是 通过隔离, 减少 互相干扰
基于这种思想, 我们来操作分支
2. 命令
1. 查看分支
概述
- 查看现有分支, 当前分支
命令
# 结果
# * <branchName> 这个表示, 当前分支
> git branch
2. 创建分支
概述
- 创建新分支
命令
> git branch <branchName>
# 创建完成后, 需要切换过去
# 后面有 创建并切换 的方法, 不要着急
> git checkout <branch>
分支名称
概述
- 分支的名字, 也不是 随便起的
字符集
非法
~
^
:
?
*
[
..
各种空白字符
合法
非法
# 不能用这些东西开头
/
.
-
# 不能用这些东西结尾
/
3. 更详细的查看 分支
概述
- 一种更详细查看分支的方法
命令
# 可以查看全部, 或者只查看某个特定分支
# 这个命令, 暂时不做解释, 是那种不好讲明白, 但是一用就懂的类型
> git show-branch [branchName]
简述
- 显示结果
- 上
- 各个分支
- 名称
- 最新提交的 comment
- 当前状态
- 左边还有一个 图例
- 各个分支
- 下
- 提交记录
- 首先是 图例
- 分支名
- 提交 comment
- 提交记录
- 上
- 显示结果
4. 检出分支
概述
- 检出一个别的分支
场景1: 简单检出一个别的分支
命令
# 确保当前分支的所有变动, 已经提交
> git checkout <branchName>
结果
- 追踪文件的变化
- 全部以 新分支 为准
- 追踪文件的变化
场景2: 追踪文件有修改, 但是没有提交
命令
- 同 场景1
结果
- git 拒绝切换
- git 会提示你, 有内容需要提交, 防止修改丢失
其他
- 如果真的有内容不想提交
- -f 强制切换
- 借助 stash
- 如果真的有内容不想提交
场景3: 分支合并
- 略
- 这个等到后面 合并 的时候, 一起将
- 略
场景4: 创建新分支, 并切换过去
命令
# 以当前分支代码为基础, 切换分支
> git checkout -b <newBranchName>
场景5: 无名分支
场景
- 有的时候, 会莫名其妙切换到一个 无名分支
- 其实这些情况还是有规律的, 只是我们不熟悉
- 有的时候, 会莫名其妙切换到一个 无名分支
操作
确认当前位置
- 直接查看分支即可
保留操作
- 命令
- 使用 场景4 的命令即可
- 命令
丢弃操作
- 命令
- 直接切换到别的分支即可
- 命令
5. 删除分支
概述
- 删除不需要的分支
命令
# 首先, 不能删除 当前分支
> git branch -d <branchName>
ps
ref
- Git 版本控制管理(第2版)
- 翻译得不太好, 但是内容值得一看
- 比 pro git 稍微好入门一些
- 我自己整理的东西, 应该不会完全按照它的思路来
- Git 版本控制管理(第2版)
问题: 分支命名
会出现一些问题
场景
- 当前已经有了 test 分支
- 我想创建一个分支名为 test/v1
结果
> git branch test/v1
fatal: cannot lock ref 'refs/heads/test/v1': 'refs/heads/test' exists; cannot create 'refs/heads/test/v1'
命名分支, 是否有一个 最佳实践
- 这个我简单翻阅了下 github 的几个大项目, 目前没有找到
切分支, 应该也是有风险的
- 追踪文件
- 这块应该还行
- 未追踪文件
- 这个东西, 我暂时没有尝试
- 书上说, 不会管, 保留原样
- p92
- 书上说, 不会管, 保留原样
- 这个东西, 我暂时没有尝试
- 追踪文件
后续
- 应该是 分支合并 相关的内容吧
其他
- 2020 年的第一篇技术向博客, 来的有点晚了
- 感觉回不到之前那种 高产赛母猪 的状态了
Git - 08. git branch的更多相关文章
- [Git]08 如何自动补全命令
[Git]08如何自动补全命令 如果你用的是 Bash shell,可以试试看 Git 提供的自动完成脚本.下载 Git 的源代码,进入 contrib/completion 目录,会看到一个g ...
- [git] 关闭 git branch 的pager
高版本的git做了pager的调整. git diff git log git branch 等命令都用了pager, 默认的pager用了less 在我的应用里, 通常branch只有那么3,5个. ...
- Merge git repo into branch of another repo
git 两个repo merge You can't merge a repository into a branch. You can merge a branch from another rep ...
- git clone all branch and create a empty branch
/******************************************************************** * git clone all branch and cre ...
- Git merge一个branch到另一个branch
在项目开发过程中,需要merge一个branch (branch名 taskBranch) 到另一个名为develop 的branch 方法: 先保证当前停留在develop的branch上 然后执行 ...
- git clone指定branch或tag
git clone指定branch或tag发布时间:October 28, 2018 // 分类: // No Comments 取完整: git clone https://github.com/a ...
- git pull的时候提示git pull <remote> <branch>
yuanqiao@yuanqiao-PC MINGW64 /h/WorkSpace/git/dadeTest (dev)$ git pullremote: Enumerating objects: 7 ...
- Git:Git初体验——Git安装配置
作为即将成为一个程序员的男人,一直在听别人说Git多好多好,之前也随便了解了一些,但是始终没有决心去学会.现在大四了,只有毕设和一门开学六七周只去过一次课的全员必修课外,也没有什么事情做,何不去做这些 ...
- Fighting regressions with git bisect---within git bisect algorithm
https://www.kernel.org/pub/software/scm/git/docs/git-bisect-lk2009.html Fighting regressions with gi ...
随机推荐
- Umi 小白纪实(二)—— model 的注册与使用
Umi 通常会搭配 Dva 使用,用于管理页面状态和逻辑 一.注册 model 首先需要在 .umirc.js 中启用 dva 插件 export default { plugins: [ ['umi ...
- CSP-J2019被虐记
-------------------------------------- (我菜到连背包都不会) ------------------------------------- 回首一想,今年的pj还 ...
- 剑指offer-面试题40-最小的k个数-最大堆
/* 题目: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. */ /* 思路: 利用最大堆,C++中使用multiset& ...
- 【39】为什么使用卷积?(Why convolutions?)
为什么使用卷积?(Why convolutions?) 我们来分析一下卷积在神经网络中如此受用的原因,然后对如何整合这些卷积,如何通过一个标注过的训练集训练卷积神经网络做个简单概括.和只用全连接层相比 ...
- 【笔记】机器学习 - 李宏毅 - 9 - Keras Demo
3.1 configuration 3.2 寻找最优网络参数 代码示例: # 1.Step 1 model = Sequential() model.add(Dense(input_dim=28*28 ...
- Lucene索引维护(添加、修改、删除)
1. Field域属性分类 添加文档的时候,我们文档当中包含多个域,那么域的类型是我们自定义的,上个案例使用的TextField域,那么这个域他会自动分词,然后存储 我们要根据数 ...
- JN_0010:谷歌浏览器启动安全模式,直接打开H5项目
1,找到桌面chrome 2,复制粘贴一份新的 3,右键属性 4,在目标输入框最末端加上这句(注意空格) --disable-web-security --user-data-dir=D:\chrom ...
- QQ全量上云,你想了解的技术细节都在这
腾讯的业务体量非常庞大,在2019年,腾讯已拥有超过了100万台服务器,其中,社交业务包括QQ和空间的体量有近20万台服务器,且分布在全国三地. 把QQ这头大象搬到云上并非易事.作为腾讯最庞大.最悠久 ...
- SSL证书基础知识
公司要为一个英国的客户提供由HTTP升级到HTTPS的服务,于是接触查询并学习了相关的SSL证书方面的内容,并整理了一翻. I.SSL证书说明 SSL 证书按大类一般可分为 DV SSL .OV SS ...
- 对象的三大特性(封装、继承、多态)——java
一. 面向对象的三大特征 1. 封装---->减少了大量的冗余代码---->封装将复杂的功能封装起来,对外开放一个接口,简单调用即可.将描述事物的数据和操作封装在一起,形成一个类:被封装的 ...