美文网首页脚本化工具让前端飞程序员
几张图让你彻底弄懂git工作流(一)——git简史与git基础

几张图让你彻底弄懂git工作流(一)——git简史与git基础

作者: rain_li | 来源:发表于2018-05-18 19:08 被阅读198次

    前提:现在好多开发者都用git作为版本控制,虽然很多人都在用,但是并不是所有人都知道为什么这样用。

    git简史

    git属于分布式版本控制,客户端并不只是提取最新版本文件快照,而是把代码仓库完整的镜像下来
    每一次的提交操作都是对代码仓库的完整备份

    1.git使命

    Git在设计之初就是为了搞定linux内核这种巨无霸而设计的,所以制定了自己的使命

    • 速度
    • 简单的设计
    • 对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
    • 完全分布式
    • 有能力高效管理类似Linux内核一样的超大规模项目(速度和数据量)
    2.git优点

    Git作为分布式版本控制的代表,优点如下:

    • 本地仓库
    • 轻量级分支
    • 分布式
    • 各种工作流
    3.谁在使用

    经过10多年的发展,目前绝大部分开源项目都在使用Git,目前Git已经处于霸主地位

    • Git
    • Linux Kernel
    • Eclipse
    • Perl
    • Android
    • TypeScript
    • webkit

    git基础

    文件流转 文字描述(取)
    image 文件三种状态:
    ==已提交(committed)==--该文件已经被安全地保存在本地数据库中 & ==已修改(modified)==--修改了某个文件,没提交保存 & ==已暂存(staged)==--已修改的文件放在下次提交时要保存的清单中
    每个项目都有一个 Git 目录:
    git clone 下的.git目录就是,每次克隆镜像仓库时,实际拷贝的是.git目录里面的数据
    文件流转的三个工作区域:
    工作目录--从项目中取出某个版本的所有文件和目录,开始后续工作
    暂存区域--简单文件,一般放在.git目录中
    基本的 Git 工作流程(左图):
    在工作目录中修改某些文件。对修改后的文件进行快照,然后保存到暂存区域。提交更新,将保存在暂存区域的文件快照永久转储到 Git 目录中。
    文件状态 文字描述(修)
    image 工作目录下的文件状态:
    已跟踪:本来纳入版本控制管理文件,上次快照中有他们的记录,工作一段时间状态可能是未更新,已修改,已放在暂缓区
    未跟中(除已跟踪):既没有上次更新时的快照,也不在当前的暂存区域
    第一次克隆仓库时工作目录所有的文件属于已跟踪,未修改
    相关状态命令
    git status检查当前文件状态
    git add 跟踪新文件
    cat .gitignore .[oa] Git 忽略所有以 .o 或 .a 结尾的文件
    git diff查看尚未暂存的文件更新了哪些
    git diff --cached 查看已经暂存起来的变化
    git commit提交更新
    git rm从已跟踪文件清单中移除
    git mv from to移动文件===mv A B , rmA ,git addB
    Git 时的文件状态变化周期(左图):
    在编辑过某些文件之后,Git 将这些文件标为已修改。我们逐步把这些修改过的文件放到暂存区域,直到最后一次性提交所有这些暂存起来的文件,如此重复。
    存储快照 文字描述(存)
    image 直接记录快照,而非差异比较:
    1.git并不保存前后变化的差异数据,更像是吧变化文件作快照后,记录在一个微型文件系统中。
    2.每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一快照,然后保存一个指向这次快照的索引。为提高性能,若文件没有变化,Git 不会再次保存,而只对上次保存的快照作一链接。
    近乎所有操作都是本地执行:
    在Git中的绝大多数操作都只需要访问本地文件和资源,不用连网
    时刻保持数据完整性:
    1.在保存到 Git 之前,所有数据都要进行内容的校验和(checksum)计算,并将此结果作为数据的唯一标识和索引
    2.Git 的工作完全依赖于这类指纹字串,所以你会经常看到这样的哈希值。实际上,所有保存在 Git 数据库中的东西都是用此哈希值来作索引的,而不是靠文件名。
    3.文件在传输时变得不完整,或者磁盘损坏导致文件数据缺失,Git 都能立即察觉。
    多数操作仅添加数据:
    Git 操作大多仅仅是把数据添加到数据库。



    更多内容请查看《几张图让你彻底弄懂git工作流(二)》 😊

    文章出处:起底Git & Pro Git
    更多文章: https://xiaodian-li.github.io/

    相关文章

      网友评论

        本文标题:几张图让你彻底弄懂git工作流(一)——git简史与git基础

        本文链接:https://www.haomeiwen.com/subject/grkndftx.html