美文网首页
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