美文网首页
GIT 概念和配置

GIT 概念和配置

作者: RonZheng2010 | 来源:发表于2018-12-13 22:32 被阅读0次

1. GIT基本概念

Git 有三种状态,你的文件可能处于其中之一:

  • 已提交(committed)。表示数据已经安全的保存在本地数据库中。
  • 已修改(modified)。表示修改了文件,但还没保存到数据库中。
  • 已暂存(staged)。前两者中间的状态,表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。

由此引入 Git 项目的三个工作区域的概念:Git 仓库、工作目录以及暂存区域。

1.1 Git 仓库 (Git Repository)

Git 仓库目录是 Git 用来保存项目的元数据和对象数据库的地方。 这是 Git 中最重要的部分,从其它计算机克隆仓库时,拷贝的就是这里的数据。

1.2 工作目录 (Working Directory)

工作目录是对项目的某个版本独立提取出来的内容。 这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。

1.3 暂存区域 (Staging Area)

暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。 有时候也被称作`‘索引(Index)’',不过一般说法还是叫暂存区域。

1.4 基本 Git 工作流程

  • 在工作目录中修改文件。
  • 暂存文件,将文件的快照放入暂存区域。
  • 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。

如果 Git 目录中保存着特定版本的文件,就属于“已提交”状态。 如果作了修改并已放入暂存区域,就属于“已暂存”状态。 如果自上次取出后,作了修改但还没有放到暂存区域,就是“已修改”状态。

2. 用户环境配置

2.1 用git config进行配置用户信息

$ git config --global user.name "ronzheng"
$ git config --global user.email ronzheng@none.com

2.2 用git config配置编辑器

Git 需要你输入信息时,会调用它。 如果未配置,Git 会使用操作系统默认的文本编辑器,通常是 Vim。

$ git config --global core.editor vim

2.3 命令别名

例子中创建了两个别名。git unstage丢弃工作目录中的修改,git last显示最后一条提交的信息。

$ git config --global alias.unstage 'reset HEAD --'
$ git config --global alias.last 'log -1 HEAD'

2.4 .gitconfig文件

前面配置时,如果指定--global选项,配置信息会保存在~/.gitconfig文件中。

除了保存前面的配置外,如下的.config还创建了三个别名。

  • git lg 用树形结构显示提交
  • git lgd 用树形结构显示提交,显示的日期是绝对时间
  • git lgr 用树形结构显示提交,显示的日期是相对时间
[user]
    name = ronzheng 
    email = ronzheng@none.com
[alias]
    unstage = reset HEAD --
    last = log -1 HEAD
     #
    # %h:  abbreviated commit hash
    # %d:  ref names
    # %s:  subject
    # %cd: commit data.
    # %cr: commit date, relative
    # %an: author name
    # %Cred: switch color to red
    # %Creset: reset color
    # %C(yellow): switch to yellow
    #
    lg  = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s' 
    lgd = log --graph --date=short --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cd) %C(bold blue)<%an>%Creset' 
    lgr = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' 

3. 用.gitignore忽略文件

一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。

文件 .gitignore 的格式规范如下:

  • 所有空行或者以 # 开头的行都会被 Git 忽略。
  • 可以使用标准的 glob 模式匹配。
  • 匹配模式可以以(/)开头防止递归。
  • 匹配模式可以以(/)结尾指定目录。
  • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。

  • 星号(**)匹配零个或多个任意字符;
  • [abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);+ 问号(?)只匹配一个任意字符;
  • 如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。
  • 使用两个星号(*) 表示匹配任意中间目录,比如a/**/z 可以匹配 a/z, a/b/z 或 a/b/c/z等。
# 忽略扩展名为.a的文件
*.a
# 但以lib.a结尾的文件除外
!lib.a
# 忽略目录build及其子目录和文件
build/

相关链接

GIT 常用命令(一)
GIT 常用命令(二)
GIT 概念和配置
【转】一个成功的 Git 分支模型

4. 参考文档

Git book

相关文章

网友评论

      本文标题:GIT 概念和配置

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