单页面零售网站,网站成本,大连大久建设集团有限公司,房子装修网站Git 学习指南#xff08;三#xff09;版本库与分支 五. 版本库5.1 一种简单而高效的存储系统5.2 存储目录#xff1a;Blob与Tree5.3 相同数据只存储一次5.4 压缩相似内容5.5 不同文件散列值相同的情况5.6 提交对象5.7 提交历史中的对象宠用5.8 重命名、移动与复制 六. 分支… Git 学习指南三版本库与分支 五. 版本库5.1 一种简单而高效的存储系统5.2 存储目录Blob与Tree5.3 相同数据只存储一次5.4 压缩相似内容5.5 不同文件散列值相同的情况5.6 提交对象5.7 提交历史中的对象宠用5.8 重命名、移动与复制 六. 分支6.1 并行使开发6.2 修复旧版本中的bug6.3 分支6.4 泳道6.5 当前活跃分支6.6 重置分支指针6.7 删除分支6.8 清理提交对象 七. 合并分支7.1 合并过程中发生的事7.2 冲突7.3 编辑冲突7.4 冲突标志7.5 解决编制冲突7.6 内容冲突7.7 快进合并7.8 第一父级提交历史7.9 棘手的合并冲突7.10 摆烂 读前须知 本篇章内容取自《Git 学习指南》 P33~P56如需更多详细内容请购买正版书籍 上一章节 【书籍篇】Git 学习指南二提交与多次提交 下一章节 五. 版本库 Git主要由两个层面构成 1顶层结构瓷质命令2底层结构管道
瓷质命令 例如log、reset、commit等命令
管道 一组带有少量选项的简单命令瓷质命令的基础 5.1 一种简单而高效的存储系统 Git 核心是一个对象数据库可用来存储文本或二进制数据 命令描述git hash-object -w dev.txt将文件里的记录插入到对象数据库中返回一个键值git cat-file -p [键值]从对象数据库中取出数据
5.2 存储目录Blob与Tree Git使用一种包含两个节点类型的简单树结构。
1文件内容将保持不变并以blob对象的形式按字节被存储在对象数据库中
2目录则将用tree对象来表示 5.3 相同数据只存储一次 为了节省内存空间Git对于相同数据将只存储一次。两个相同的文件返回的散列值相同 $ git hash-object -w dev.txt
9ef6c44f066c4a066cfd2df21a536b5a6958e724$ git hash-object -w dev-clone.txt
9ef6c44f066c4a066cfd2df21a536b5a6958e7245.4 压缩相似内容 Git对与旧文件差别不大的新文件采用增量方法来存储这些文件 5.5 不同文件散列值相同的情况 1散列值的可能取值有2^160个 2运行了五年的linux内核项目也仅有2^21个对象 5.6 提交对象 tree 描述该提交的内容
parent 指的是它的上一次提交
author 作者
committer 提交者
提交注释 $ git cat-file -p db237a0
tree 0d4285779205fa3b297d7065640b29ad13c43de2
parent 5de4b2ffdfa84f7a4d9f16912ddebab8f4e593ad
author jieKaMi l 1700579541 0800
committer jieKaMi l 1700579541 0800first5.7 提交历史中的对象宠用 一次提交往往只涉及项目中少数文件修改而其它大部分文件和目录不会发生变化所以Git尽可能多地重用前次提交中的相关对象 5.8 重命名、移动与复制 概念 略。。。详细内容《Git 学习指南》 P37~P38 命令描述git log --summary -M90% | grep -e “^ xxxx”获取一份摘要git log --follow dev.txt跟踪被移动文件的历史git log --summary -C90% grep -e “^ xxxx”跟踪被复制的数据git config diff.renames true重命名检测配制成Git的默认选项git blame -M -C -C -C dev.txt逐行打印源头信息
六. 分支 版本提交不能依次进行的原因1有两个以上的开发者在对同一项目进行并行式开发 2为修复旧版本中的bug而必须要创建和发布新的版本
6.1~6.4 略。。。详细内容《Git 学习指南》 P41~P42 6.1 并行使开发
6.2 修复旧版本中的bug
6.3 分支
6.4 泳道
6.5 当前活跃分支 切换分支被拒绝
1提交修改git commit -all
2放弃修改git checkout --force A
3存储修改git stash、git checkout A 命令描述git branch A创建分支Agit branch B [散列值]指定提交创建分支git branch C A从现有分支中创建分支git checkout A切换分支git checkout -b D创建并切换分支
6.6 重置分支指针 重置分支指针 git reset --hard [散列值]
reset --hard命令会覆盖当前工作区和暂存区中的所有修改所以最好执行前先用git stash命令存储一下这些修改 6.7 删除分支
命令描述git branch -d A删除分支Agit branch -D A强制删除分支Agit branch A [散列值]在已知提交的散列值的情况下恢复分支Agit reflog找到需要恢复分支的提交散列值git branch A HEAD{1}恢复指定散列值的分支
6.8 清理提交对象 gc命令 用于清理版本库移除所有不属于当前分支的提交对象 七. 合并分支
略。。。详细内容《Git 学习指南》 P46~P56
7.1 合并过程中发生的事
7.2 冲突
冲突描述编辑冲突通常发生在两个开发者对同一行代码做了不同修改的时候内容冲突通常发生在连个开发者对某份代码的几个部分做出各自修改的时候
7.3 编辑冲突
7.4 冲突标志
7.5 解决编制冲突
7.6 内容冲突
7.7 快进合并
7.8 第一父级提交历史
7.9 棘手的合并冲突
7.10 摆烂