Git整理(1)

来源:互联网 发布:ip地址网络字节序 编辑:程序博客网 时间:2024/06/05 00:34

Git整理(1)

转至元数据结尾
转至元数据起始

git整理:

  1.git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库。不会像集中式版本控制器,一旦中央服务器挂掉,如果没有备份的话,整个项目都没有掉了,集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。

  2.git分为3个部分,工作区(就是工作的文件夹),暂存区(就是版本库中index标记的,包含文件索引的目录树,像是一个虚拟的工作区。在这个虚拟工作区的目录树中,记录了文件名、文件的状态信息(时间戳、文件长度等),文件的 内容并不存储其中,而是保存在 Git 对象库(.git/objects)中),master标记的可以认为是一个对象库。文件索引(暂存区)建立了文件和对象库中对象实体之间的对应。下面这个图展示了工作区、版本库中的暂存区和版本库之间的关 系。

当对工作区修改(或新增)的文件执行git add命令时,暂存区的目录树会被更新,同时工作区修改(或新增)的文件内容会被写入到对象库中的一个新的对象中,而该对象的id被记录在暂存区的文件索引中。
当执行提交操作(git commit)时,暂存区的目录树会写到版本库(对象库)中,master分支会做相应的更新,即master最新指向的目录树就是提交时原暂存区的目录树。

当执行git reset HEAD命令时,暂存区的目录树会被重写,会被master分支指向的目录树所替换,但是工作区不受影响。(默认–mixed参数  回退到commit add之前,即(版本库和暂存区会改,工作区不变))。

当执行git rm --cached 命令时,会直接从暂存区删除文件,工作区则不做出改变.(文件状态还原为未暂存状态当下次在工作区修改该文件,将会列为未跟踪的文件。)

当执行 “git checkout .” 或者 “git checkout — <file>” 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动。(慎用

 当执行 “git checkout HEAD .” 或者 “git checkout HEAD <file>” 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改 动。(慎用


3.工作区的文件分为:跟踪文件(纳入版本控制的文件)和未被跟踪的文件(未被纳入版本控制的文件),跟踪的文件又会被分为:未更新,已修改,已暂存。

 Git在未进行commit操作之前,存在三种状态:Untracked files(未跟踪),Changes not staged for commit(文件已经修改,但是还没有放入暂存区域,也就是没生成快照)及Changes to be committed(暂存区域生成了快照,等待被提交),每种状态之间可以随意进行互相转换。

4.忽略某些文件:

一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。来看一个实际的例子:

$ cat .gitignore

*.a       # 忽略所有 .a 结尾的文件

!lib.a    # 但 lib.a 除外

/TODO     # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO

build/    # 忽略 build/ 目录下的所有文件

doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

0 0
原创粉丝点击