zoukankan      html  css  js  c++  java
  • 【2】Git仓库

    一、获取 Git 仓库

    初始化仓库

    ##基于当前目录初始化仓库
    $ git init
    ##指定demo目录初始化仓库
    $ git init demo
    

    克隆现有仓库

    ##克隆现有的仓库,默认目录名:libgit2
    ##git clone <repo>
    $ git clone https://github.com/libgit2/libgit2
    ##克隆现有的仓库,指定目录名:mylibgit
    ##git clone <repo> <directory>
    $ git clone https://github.com/libgit2/libgit2 mylibgit
    

    注意:Git 克隆的是该 Git 仓库服务器上的几乎每一个文件的每一个版本,而不是仅仅复制完成你的工作所需要文件,这是 Git 区别于其它版本控制系统的一个重要特性。

    二、添加版本控制

    commit文件流程

    ##进入仓库目录创建文件
    $ cd /demo
    $ touch demo_01.c
    $ touch demo_02.c
    $ mkdir LICENSE
    ##添加文件追踪track,即添加文件至暂存区
    $ git add *.c
    $ git add LICENSE
    ##提交文件至版本库,-m 参数指定提交log
    $ git commit -m 'initial project version'
    

    说明:git add 命令使用文件或目录的路径作为参数。如果参数是目录的路径,该命令将递归地跟踪该目录下的所有文件。

    文件状态
    新建文件状态为:??

    $ cd /home/super/gitDemo
    $ touch a.txt
    $ git status -s
    

    添加track后,文件状态为:A

    git add a.txt
    git status -s
    

    未commit前,修改文件,查看文件状态为:AM

    echo "a" > a.txt
    git status -s
    

    再次track后,状态为:A

    git add a.txt
    git status -s
    

    执行commit后,文件同步,无状态

    git commit a.txt -m "init a.txt"
    git status -s
    

    执行commit后,再次修改文件,状态为: M(右M)

    echo "b" > a.txt
    git status -s
    

    再次track后,状态为:M (左M)

    git add a.txt
    git status -s
    

    未commit前,再次修改文件,状态为:MM

    echo "d" > a.txt
    git status -s
    

    再次track后,状态为:M (左M)

    git add a.txt
    git status -s
    

    执行commit,文件同步,无状态

    git commit a.txt -m "init a.txt 0.1"
    git status -s
    

    git status简要状态说明

    标记 说明
    ?? 新添加的未跟踪文件
    A  新添加到暂存区中的文件
    AM 新文件添加到暂存区后,未commit前,在工作区修改过
     M (M在右边)已被commit过的文件在工作区被修改但还没add暂存区
    M  (M在左边)已被commit过的文件在工作区被修改并已add暂存区
    MM 已被commit过的文件在工作区被修改并提交到暂存区后又在工作区中被修改

    忽略文件跟踪配置
    Git允许指定无需被纳入管理的文件,使它们不必出现在未跟踪文件列表。

    ##创建文件.gitignore
    cd <dir>
    touch .gitignore
    ##添加如下配置信息
    # no .a files
    *.a
    
    # but do track lib.a, even though you're ignoring .a files above
    !lib.a
    
    # only ignore the TODO file in the current directory, not subdir/TODO
    /TODO
    
    # ignore all files in the build/ directory
    build/
    
    # ignore doc/notes.txt, but not doc/server/arch.txt
    doc/*.txt
    
    # ignore all .pdf files in the doc/ directory
    doc/**/*.pdf
    

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

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

    说明: glob 模式指 shell版简化的正则表达式。
      星号 * 匹配零个或多个任意字符;
      [abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);
      问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字);
      使用两个星号 * 表示匹配任意中间目录,比如 a/**/z 可以匹配 a/z , a/b/z 或 a/b/c/z 等。

    参考资料

    参考网站:https://git-scm.com/book/zh/v1/起步

  • 作者: DeepInThought
    出处: https://www.cnblogs.com/DeepInThought
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
查看全文
  • 相关阅读:
    SendMessage操作另一个EXE,存在这,以后也许用得着。
    六、Delphi 2009 泛型容器单元(Generics.Collections)[5]: TObject...<T> 系列
    闲扯原码、反码、补码
    限制edit只能输入数字
    动态创建TXMLDocument对XML文件进行读取和写入
    XML操作
    Ubuntu下配置lazarus开发环境
    C#结构体(二)
    【转】 如何有效減少Nios II EDS所編譯程式碼大小? (IC Design) (Nios II)
    关于NiosII和Win7系统兼容性的问题处理方式
  • 原文地址:https://www.cnblogs.com/DeepInThought/p/11108179.html
  • Copyright © 2011-2022 走看看