Git命令之分支详解


Posted in PHP onMarch 02, 2021

1.1 概述

Git 中提交时,会保存一个 commit 对象,该对象包含一个指向暂存内容快照的指针,包含本次提交的作者等相关的附属信息,包含零个或者多个指向该提交对象的父对象指针;首次提交时没有直接祖先的,普通提交有一个祖先,由两个或者多个分支合并产生的提交则有多个祖先。

1.1.1 示例

在工作目录中有三个文件,准备将他们暂存后提交。暂存操作会对每一个文件计算校验和(SHA-1哈希串),然后把当前版本的文件快照保存在 Git 仓库中(Git使用blob类型的对象存储这些快照), 并将校验和加入暂存区域。 当使用 git commit 新建一个提交对象前,Git 会先计算每一个子目录的校验和吗,然后在 Git 仓库中将这些目录保存为树(对象);之后 Git 创建的提交对象,除了包含提交信息外,还包含了指向整个树对象的指针。这样将来需要的时候,重现此次快照的内容了。

$ git add text1.md text2.md tesxt3.md
$ git commit -m "init desc"

现在仓库中有了五个对象:三个文件表示快照内容 blob 对象;一个记录这目录树内容和其中各个文件对应 blob 对象索引的 tree 对象;还有就是一个包含指向 tree 对象的索引和其他提交信息源数据的 commit 对象。

Git命令之分支详解

修改后再次提交,这次提交的对象会包含上一个指向上次提交对象的指针。两次提交后变成下面这样。

Git命令之分支详解

Git 中的分支,其实本质上仅仅是个指向 commit 对象的可变指针。Git 会将 master 作为分支的默认名字。若干次提交以后,其实已经有一个指向最后一次提交对象的 master 分支,他在每次提交的时候都会向前移动。

Git命令之分支详解

1.1.2 创建分支

使用命令 git branch 创建分支

$ git branch testing

Git命令之分支详解

Git 保存着一个名为 HEAD 的特别的指针。在 Git 中他是一个指向你正在工作中的本地分支的指针。运行 git branch 命令,仅仅是建立了一个新的分支,但是不会自动切换到这个新建的分支中。

Git命令之分支详解

1.1.3 切换分支

使用命令 git checkout 切换分支:

$ git checkout testing

Git命令之分支详解

1.2 新建和合并

使用命令创建并切换分支

$ git checkout -b <分支名称>

合并分支,将开发分支合并到 master 主分支中

$ git checkout master
$ git merge <开发分支>

删除分支

$ git branch -d <分支名称>

解决冲突, ======= 隔开的上半部分,是 HEAD(即 master 分支,在运行 merge 命令时所切换到的分支)中的内容。下半部分是在开发分支的内容。

<<<<<<< HEAD:index.html
<div id="footer">contact : email.support@github.com</div>
=======
<div id="footer">
please contact us at support@github.com
</div>
>>>>>>> iss53:index.html

1.3 管理分支

列出所有的分支

$ git branch

列出各个分支最后一个提交对象的信息

$ git branch -v

1.4 远程分支

远程分支是对远程仓库中分支的索引。通过 git fetch origin 来同步远程服务器上的数据到本地。

推送本地的开发分支到远程

$ git push origin <开发分支名>

删除远程分支

$ git push origin :<开发分支名>

1.5 分支的扩展

git rebase ing

到此这篇关于Git命令之分支详解的文章就介绍到这了,更多相关Git命令内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
PHP分页显示制作详细讲解
Nov 19 PHP
php5 图片验证码实现代码
Dec 11 PHP
php数据库配置文件一般做法分享
Jul 07 PHP
PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)
Sep 22 PHP
PHP实现适用于自定义的验证码类
Jun 15 PHP
PHP文件上传操作实例详解
Sep 27 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
Nov 29 PHP
PHP 实现页面静态化的几种方法
Jul 23 PHP
PHP实现批量重命名某个文件夹下所有文件的方法
Sep 04 PHP
php实现mysql连接池效果实现代码
Jan 25 PHP
PHP实现文字写入图片功能
Feb 18 PHP
PHP使用PDO实现mysql防注入功能详解
Dec 20 PHP
PHP之header函数详解
Mar 02 #PHP
laravel与thinkphp之间的区别与优缺点
Mar 02 #PHP
php中array_fill函数的实例用法
Mar 02 #PHP
PHP网站常见安全漏洞,及相应防范措施总结
Mar 01 #PHP
php框架知识点的整理和补充
Mar 01 #PHP
Docker 安装 PHP并与Nginx的部署实例讲解
Feb 27 #PHP
PHP加MySQL消息队列深入理解
Feb 27 #PHP
You might like
php获取本地图片文件并生成xml文件输出具体思路
2013/04/27 PHP
destoon供应信息title调用出公司名称的方法
2014/08/22 PHP
PHP的拦截器实例分析
2014/11/03 PHP
PHP自毁程序(慎用)
2015/07/09 PHP
Laravel关联模型中过滤结果为空的结果集(has和with区别)
2018/10/18 PHP
Extjs ajax同步请求时post方式参数发送方式
2009/08/05 Javascript
jquery validate poshytip 自定义样式
2012/11/26 Javascript
addEventListener和attachEvent二者绑定的执行函数中的this不相同
2012/12/09 Javascript
javascript定义变量时有var和没有var的区别探讨
2014/07/21 Javascript
详解JavaScript数组的操作大全
2015/10/19 Javascript
js验证身份证号有效性并提示对应信息
2015/10/19 Javascript
javascript类型系统_正则表达式RegExp类型详解
2016/06/24 Javascript
AngularJS压缩JS技巧分析
2016/11/08 Javascript
node.js中debug模块的简单介绍与使用
2017/04/25 Javascript
JavaScript之Date_动力节点Java学院整理
2017/06/28 Javascript
js原生代码实现轮播图的实例讲解
2017/07/28 Javascript
JavaScript生成简单等差数列
2017/11/28 Javascript
JS实现扫码枪扫描二维码功能
2020/01/03 Javascript
python多线程用法实例详解
2015/01/15 Python
python控制台中实现进度条功能
2015/11/10 Python
python 对象和json互相转换方法
2018/03/22 Python
Python如何发布程序的详细教程
2018/10/09 Python
基于python历史天气采集的分析
2019/02/14 Python
Python实现去除列表中重复元素的方法总结【7种方法】
2019/02/16 Python
python根据多个文件名批量查找文件
2019/08/13 Python
在pycharm中为项目导入anacodna环境的操作方法
2020/02/12 Python
Python sqlalchemy时间戳及密码管理实现代码详解
2020/08/01 Python
英文简历自荐信范文
2013/12/11 职场文书
国际残疾人日广播稿范文
2014/10/09 职场文书
2014年小学校长工作总结
2014/12/08 职场文书
2015年仓库管理员工作总结
2015/04/21 职场文书
道士塔读书笔记
2015/06/30 职场文书
2015年校医个人工作总结
2015/07/24 职场文书
2016年“我们的节日·中秋节”活动总结
2016/04/05 职场文书
MySQL官方导出工具mysqlpump的使用
2021/05/21 MySQL
微信小程序结合ThinkPHP5授权登陆后获取手机号
2021/11/23 PHP