zoukankan      html  css  js  c++  java
  • git note 摘自《git权威指南》

    目录:

    一、

    1.git diff 命令


    二、

    1.git 工作区-stage-版本库 关系

    2.git 对象库

    3.git 版本库与对象库关系


    三、

    1.git reset

    2.git checkout

    3.git stash 命令


    四、git基本操作

    1.删除

    2.移动

     

    git diff命令

    git diff :显示工作区的最新改动,即工作区与stage的差异。

    git diff HEAD:显示工作区与版本库的差异。

    git diff –staged:显示stage与版本库的差异。

    git diff3

    举例:

    git diff

    此时执行git commit 会将stage的内容提交至版本库,即下图状态:

    git diff2



    1.工作区、stage、版本库 之间的关系:

    git stage

    查看工作区、stage、版本库的目录树:

    1.查看版本库目录树:git ls-tree –l HEAD

    2.查看stage目录树:首先先将stage目录树写入objects:git write-tree 会得到一个哈希串

    git ls-tree –l 哈希串 即可查看刚才写入的的目录树


    2.Git对象库关系:

                    利用git cat-file 命令可以查看对象。参数-p:显示内容 参数-t:显示文件类型

    git obj

    3.git 版本库的结构:

    HEAD是.git/refs/heads/master 的一个引用,而master即为一个哈希串,通过 git cat-file可以看出,它是一个commit。

    demo$cat .git/refs/heads/master
    c04a9ef45294528fec63d05fa67e40650e2fb60b

    demo$git cat-file -t c04a9ef
    commit

    which version checked in?

    git res



    1.Git reset

        用于重置stage

    1.git reset [-q] [<commit>] [--] <paths>…

    2.git reset [ - -soft| - -mixed|- -hard|- - merge|—keep] [-q] [<commit>]

    ps:<commit>为可选项,可以使用引用或者提交ID,如果省略,<commit>则相当于使用了HEAD的指向作为提交ID。

    1方法是用指定的提交状态下的文件替换掉stage中的文件,例如git reset HEAD 相当于取消之前执行git add 命令时改变的stage。

    2方法会引起重置引用。根据不同的选项,可以对stage区和工作区进行重置。

    git reset

    git reset –hard <commit> 会引发1->2->3动作

    git reset –soft <commit> 只会引发1动作

    git reset –mixed <commit> 会引发1->2动作(默认就是mixed,即同git reset <commit>)


    2.Git checkout

        用于覆盖工作区

    1.git checkout  [-q] [<commit>] [- -] <paths>             用stage文件覆盖工作区文件(前提:commit省略)

    2.git checkout [<branch>]                                        切换分支

    3.git checkout [-m] [[-b|—orphan] <new_branch>] [<start_point>] 创建、切换到新分支

    git checkout

    git checkout branch                    会引发1->2->3 动作

    git checkout                               汇总显示工作区、stage、HEAD差异

    git checkout  - -filename              用stage中的filename文件覆盖工作区中的filename文件

    git checkout branch - - filename   维持HEAD不变,用branch中的filename覆盖stage与工作区的filename文件

    git checkout - -.                         用stage中的所有文件覆盖工作区的文件

    3.git stash 命令

        用于保存、恢复工作进度

    1.git stash        保存当前工作进度(stage与工作区)

    2.git stash list    显示进度列表

    3.git stash pop [- -index] [<stash>] 不加参数会恢复最新保存的工作进度,并将恢复的工作进度从进度中删除

                                                     如果提供<stash>参数,则从该<stash>中恢复,恢复完毕删除

                                                     - -index 选项除了恢复工作区文件,并尝试恢复暂存区。

    4.git stash [save [- -patch] [-k|- -[no-]keep-index] [-q|- -quiet] [<message>]

                                                   保存进度并指定说明

                                                    -- patch会显示工作区与HEAD的差异,通过差异文件的编辑决定在进度中最终要保存的工作区内容。

                                                    -k 或 - -keep-index参数,在保存进度后不会将暂存区重置。默认会将暂存区、工作区强制重置。

    5.git stash apply [- -index][<stash>] 恢复工作进度,但是不删除

    6.git stash drop [<stash>]               删除一个存储的进度(最新)

    7.git stash clear                             删除所有进度

    8.git stash branch <branch_name> <stash> 基于进度创建分支

    4.git 常用操作

    1.删除:方法一:git rm file1 file2….(缺点:文件名得一个个删除,方法二直接把本地变更提交,解决此问题。)

               方法二:git add –u:将本地变更的文件(被版本库追踪的)记录到stage

      恢复删除:方法一:git cat-file –p HEAD~1:filename > localfilename

                    方法二:git show HEAD~1:filename > localfilename

                    方法三:git checout HEAD~1  - - filename (最简洁实用的方法)

    2.移动:方法一:git mv oldname newname

               方法二:mv oldname newname

                          git add –A (相当于对修改文件git add 对删除文件执行git rm,对新增文件执行 git add)

                           这种方法git依旧能对内容追踪,感知到文件名的修改。

    3.helloworld实例:

               git add –i :交互式的添加文件到stage

  • 相关阅读:
    极简代码搞定视频剪辑
    python 遍历本地文件
    安装Anaconda需要知道的pc信息
    ng4 路由多参数传参以及接收
    Js之设置日期时间 判断日期是否在范围内
    VsCode显示左边折叠代码+-按钮
    H5+.Net Webapi集成微信分享前后端代码 微信JS-SDK wx.onMenuShareTimeline wx.onMenuShareAppMessage
    压测工具之JMeter之环境配置及运行
    C# 交集、差集、并集、去重
    Nginx初学者指南
  • 原文地址:https://www.cnblogs.com/cokecoffe/p/2798456.html
Copyright © 2011-2022 走看看