• Git版本控制管理学习笔记5-提交


        这个标题其实有些让人费解,因为会想这个提交是动词还是名称?

        提交动作是通过git commit命令来实现的,提交之后会在对象库中新增一个提交对象。提交过程中会发生哪些变化,在上一篇笔记里面已经介绍过,看下那几张过程图就可以了。

        需要明确的是,在Git中,版本库的变更和提交是一一对应的关系,也就是说,提交是将变更引入到版本库的唯一方法。

        Git在提交时,会记录索引的快照并把快照存放到对象库中。下一次提交前,就会将当前索引中的状态与上一次生成的快照进行对比,派生出一个受影响的文件和目录列表。

    一、原子变更集:

          每一个提交都代表一个相对于之前的状态的单个原子变更集,提交时要么成功,要么全部拒绝。

    二、识别提交:

         这一节主要介绍的是提交在Git中的表示方式,包括显式引用和隐式引用。比如,一个40位的SHA1码就是显式引用,HEAD就是一个隐式引用。

         这里将要介绍各种引用的不同书写方法。

    • 绝对提交名:其实就是散列标识符。可以使用下面的命令来查看。
    [root@flower1 committest]# git log -1 --pretty=oneline HEAD
    2a9b52785b94c45852276c4febb4e05d9e25de1f new data ty
    [root@flower1 committest]# git log -1 --pretty=oneline 2a9b
    2a9b52785b94c45852276c4febb4e05d9e25de1f new data ty
    • 引用和符号引用:本地特征分支名称、远程跟踪分支名称和标签名都是引用。目录中有3种不同的命名空间表示不同的引用:refs/heads/ref代码本地分支, refs/remotes/ref代表远程跟踪分支,refs/tags/ref代表标签。
    [root@flower1 committest]# find .git/refs/
    .git/refs/
    .git/refs/tags
    .git/refs/heads
    .git/refs/heads/master
    .git/refs/remotes/ref
    .git/refs/remotes/ref/HEAD
    • 相对提交名:看下面的例子就知道了。

    6.2多个父提交名

    C^1:等同于C^,表示提交C的第一父提交。

    C^2:表示提交C的第二父提交。

    C~1:等同于C~,表示提交C的第一个父提交。

    C~2:表示提交C的第一个祖父提交。

    C~3:表示提交C的第一个曾祖父提交。

    C~3^2^2^:表示提交C的第一个曾祖父提交--的--第二父提交--的--第二父提交--的--第一父提交。

    这里会用到的git命令如下:

    [root@flower1 my_website]# git rev-parse master
    e4db73549d3e9289b8ec9c5ec325e1a672942f28
    [root@flower1 my_website]# git show-branch --more=35 | tail -10
    [master] rename2
    [master^] rename
    [master~2] test
    [master~3] remove
    [master~4] test
    [master~5] Remove a poem
    [master~6] this is poem, the second file added!
    [master~7] firsr change
    [master~8] Initial contents of public_html
    [root@flower1 my_website]# git rev-parse master~6
    3df360e031a40a3c7e35856ed4f0b8f63551c89b

    三、提交历史记录:

    1、查看旧提交:

        这里看几个示例命令就行了。

    [root@flower1 my_website]# git log master

       [root@flower1 my_website]# git log --pretty=short --abbrev-commit master~6 master~3

       [root@flower1 my_website]# git log --pretty=short --stat master~6 master~4

    2、提交图:

    image

    四、查找提交:

    使用下列工具,暂不关注:

    • git bisect
    • git blame
    • Pickaxe
  • 相关阅读:
    Using the @synchronized Directive
    What Are Threads?
    ios 线程同步
    CAAnimation 动画支撑系统
    UIView 动画 依赖与 CALayer的证据
    动画的定义
    Core Animation1-简介
    繁的是表象,简的是本质
    完全自定义动画
    线程安全与可重入
  • 原文地址:https://www.cnblogs.com/tq03/p/5022372.html
Copyright © 2020-2023  润新知