• 第五章:文件管理与索引


    1】Git会在工作目录和版本库之间加设一层索引,用来暂存(stage)、收藏或者修改。

    2】在工作目录下编辑,在索引中积累修改,然后把索引中积累的修改作为一次性变更进行提交。

    3】Git的索引就是一组预期的修改,只有提交后才会在版本库中实现变更。

    4】除了移动和删除文件,其他的暂存和提交可以合成一步完成。

    1、关于索引的一切

      1】Git 索引不包含任何文件内容,它仅仅追踪想要提交的的那些内容。

         git  commit  命令,Git通过索引找到而不是工作目录找提交的内容。

      2】Git的 "porcelain" (高层)命令对你隐藏的索引的细节,但也了解索引和它的状态。

      3】git  status命令可以查看索引的状态, git  ls-file : 底层命令,查看Git的内部状态。

      4】git  diff命令查看,仍留在工作目录中且未暂存的变更。 git  diff  --cached显示已经暂存的变更。

    2、Git中的文件分类

      1】Git将文件分为3类: 已追踪、被忽略的以及未追踪的。

      

      2】编辑器和构建环境会在源码周围遗留一些临时文件。这些文件应该被忽略。

    `     a】在根目录下创建  .gitignore文件(不带后缀),在文件里添加忽略文件的名称。

       

       

        

    3、使用git  add

      1】git  add命令,暂存文件,同时将未追踪文件转化成已追踪文件。

      2】git  add  目录名。 暂存该目录下的所有文件。

      3】git  hash-object  file命令,直接计算当前目录中的文件的SHA1值。

      

      4】文件存储在对象库中,索引只是指向它而已。

      5】git  add 或者 commit 命令, --interactive选项   +  路径。操作路径下的文件进行暂存或者提交。

      

       

    4、使用git  commit  的一些注意事项

      1】git  commit  -a 命令会自动暂存所有已知的修改的文件。新文件除外(索引中没有的)

      2】不通过命令行直接提供日志消息,Git会启动编辑器

      

      

    5、使用git  rm

      1】git  rm命令会在版本库和工作目录中同时删除文件.

      2】删除文件比添加文件问题要多,Git对移除文件更多关注。

      3】Git  可以从索引或者同时从索引和工作目录中删除文件,但不会只从工作目录中删除文件。

      4】git  rm   是对索引进行操作的命令,所以这个命令对没有添加到版本库或索引中的文件无效。

      5】git  rm  --cached会删除索引中的文件,工作目录中还在。 git  rm 命令将文件从索引和工作目录都删除。

      6】Git删除文件前,会先进行检查:工作目录下该文件的版本与当前分支中的最新版本一致。

      7】git checkout  --file :  用版本库或者暂存区里的版本替换工作区的版本。

    6、使用git  mv

      1】Git会在索引中删除stuff路径名,并添加newstuff的路径名。

         stuff的原始内容仍保存在对象库中,将对象库中的内容与newstuff重新关联。

      2】git  log  newfile 查看修改过名字的文件,只能查看到新名字文件的历史记录。

           查看文件的全部历史记录添加   --follow选项。

    7、追踪重命名注解

      1】SVN对文件重命名和移动做了很多追踪工作。因为它只追踪文件之间的差异。

      2】SVN只是做重命名,也需要再次传输和存储文件的全部内容。

      3】SVN显式的追踪每一次重命名,缓解上面的情况。注意: mv有效。 rm  +   add不会显式。

      4】Git不追踪重命名,文件的移动只会影响树对象。

      

    8、.gitignore文件

      1】将要忽略的文件的路径写入 .gitignore文件内,就能忽略该文件。

      2】Git支持丰富的忽略写法。

      如何解决,之忽略根目录下的  1.txt文件而不忽略1/1.txt文件

      

      3】Git允许每一个目录下都有 .gitignore文件,每个文件都只影响该目录及其子目录。

      4】.gitignore文件的规则是级联的。可覆盖高层规则。

      5】Git对忽略文件设置的优先顺序:   从高到低。

      

      6】当忽略文件适用于所有版本库时,才会写入.gitignore文件内。

      7】当忽略文件只适用于自己的版本库时,要写入 .git/info/exclude文件内。

      

      

      

      8】.gitignore只能忽略没有被track(追踪)的文件,已经纳入版本管理中的文件,修改.gitignore是无效的。

     9、Git中对象模型和文件的详细视图

      1】从工作目录、索引、版本库三个角度理解Git操作。

      2】图1, 工作目录包含两个文件,内容分别是"foo"  和  "bar"。

      

                     (图 1)

       3】图2、工作目录中修改file1内容"foo"为 "quux"。工作目录是脏的(脏:是指工作目录和版本库不同)

      

                     (图 2)

       4】图3、file1在工作目录修改后,进行  git  add  file1操作。

      

                  (图 3)

      5】图4、 git  add  file1操作后,进行git  commit 操作。发生的变化。

      

                    (图 4)

  • 相关阅读:
    理解Python中的__init__和__new__
    Python内置数学函数
    Java实现邮箱验证
    Socket通信
    Jvm内存模型
    Java GC如何判断对象是否为垃圾
    ::符号
    替换特殊符号
    有意思的小知识
    有意思的小题目
  • 原文地址:https://www.cnblogs.com/changdasheng/p/13214190.html
Copyright © 2020-2023  润新知