Git权威指南-第2篇-1

2017-09-18  本文已影响0人  yaoyuanyylyy

标签: git


[TOC]


1.Git结构

Git结构图

2.工作区目录追踪

当处于工作区目录或子目录下时,可用下面命令查询各目录:

$ git rev-parse --git-dir
$ git rev-parse --show-toplevel
$ git rev-parse --show-prefix
$ git rev-parse --show-cdup
$ git ls-files
$ git ls-tree HEAD

3.Git配置

Git的配置文件 "INI"格式的。

(1)配置文件及其优先级

Git共有3个配置文件,优先级高的配置会覆盖优先级低的配置。在git config命令中加上配置文件的位置命令标识,可以配置指定级别的配置文件。默认不加则为 “--global”

名称 优先级 命令标识 配置文件位置 别称
仓库级 最高 --local 工作区的".git/config"文件 本地配置文件
全局级 中等 --global 用户主目录下的".gitconfig"文件 全局配置文件
系统级 最低 --system "/etc/gitconfig"文件 系统配置文件

(2)常用配置命令

Git的 "config" 命令可根据指定的配置文件位置标识来配置特定的文件,不指定则默认全局配置。

$ git config [--local|--global|--system] action

其中"action"可有以下取值(其中的键值格式为 "<section>.<key> [value]" ):

  • --get : 获取键的值
  • --add : 添加键值
  • --unset : 删除键的值
  • --list, -l : 查看已配置的选项
  • --edit, -e : 直接编辑配置文件

另外,也可用下面的命令获取和设置键值(命令中省略了文件位置标识):

$ git config <section>.<key>
$ git config <section>.<key> value

(3)配置用户名和密码

Git中必须配置用户名和密码,它们的键分别为 "user.name""user.email"

(3)使用"git config"命令操作其他INI文件

$ GIT_CONFIG=INI文件名.ini git config <section>.<key> value
$ GIT_CONFIG=INI文件名.ini git config <section>.<key>

4.状态查看

使用下列命令可以查看文件状态:

$ git status

加上"-s"选项表示使用精简模式:

$ git status -s

精简模式下显示的文件状态中,格式如下:

状态标识1状态标识2 文件名

其中状态标识1和状态标识2分别位于第1列和第2列,其含义为:

每列的标识可取以下值:

  • A: 新增了文件
  • C: 文件的一个新拷贝
  • D: 删除了文件
  • M: 文件的内容或者mode被修改了
  • R: 文件名被修改了
  • T: 文件的类型被修改了
  • U: 文件没有被合并(你需要完成合并才能进行提交)
  • X: 未知状态(很可能是遇到Git的bug了,你可以向git提交bug report)

5.Git工作区、版本库、暂存区原理图

Git工作区、版本库、暂存区原理图.png

简要说明:

6.工作区、暂存区和版本库之间的差异比较

Git-git diff命令与版本库关系图.png

(1)工作区与暂存区比较

$ git diff

(2)工作区与HEAD比较

$ git diff HEAD

(3)暂存区与HEAD比较

$ git diff --cached|--staged

7.HEAD与master

8.分支与ID查看

$ git branch
$ git cat-file -t|-p|-s "对象ID"
$ git rev-parse "分支名称(HEAD/master)"

9.重置命令

(1)用法1

不会重置引用,更不会改变工作区,而是用指定提交状态下的文件替换掉暂存区中的文件

$ git reset [-q] [<commit>] [--] <paths>...

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

(2)用法2

会重置引用,根据不同选项,可以对暂存区或工作区进行重置。

$ git reset [--soft|--mixed|--hard|--merge|--keep] [-q] [<commit>]
重置命令与版本库的关系.png

(3)例子

10.检出命令

检出命令会重写工作区。

(1)用法1

$ git checkout [-q] [<commit>] [--] <paths>...

<commit>是可选项,如果省略则相当于从暂存区进行检出。
此种用法不会改变HEAD头指针,主要用于用指定版本的文件覆盖工作区中对应的文件。如果省略<commit>,则会用暂存区的文件覆盖工作区的文件,否则用指定提交中的文件覆盖暂存区和工作区中对应的文件。
注意:此用法和重置命令大不相同,重置命令默认值是HEAD,而检出命令默认值是暂存区。因此重置一般用于重置暂存区(除非使用--hard参数,否则不重置工作区);检出主要是覆盖工作区(如果<commit>不省略,也会提换暂存区中相应的文件)。

(2)用法2

$ git checkout [<branch>]

此种用法会改变HEAD头指针。主要是用来切换到分支。如果省略了<branch>则相当于对工作区进行状态检查。

(3)用法3

$ git checkout [-m] [[-b]--orphan] <new_branch>] [<start_point>]

此种用法主要是创建和切换到新的分支,新的分支从<start_point>指定的提交开始创建。

(4)例子

检出命令与版本库的关系.png







上一篇下一篇

猜你喜欢

热点阅读