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

  • 相关阅读:
    iOS resign code with App Store profile and post to AppStore
    HTTPS科普扫盲帖 对称加密 非对称加密
    appid 评价
    使用Carthage安装第三方Swift库
    AngularJS:何时应该使用Directive、Controller、Service?
    xcode7 The operation couldn't be completed.
    cocoapods pod install 安装报错 is not used in any concrete target
    xcode7 NSAppTransportSecurity
    learning uboot how to set ddr parameter in qca4531 cpu
    learning uboot enable protect console
  • 原文地址:https://www.cnblogs.com/cokecoffe/p/2798456.html
Copyright © 2011-2022 走看看