git分区:

Git本地有三个工作区域:工作目录、暂存区、资源库。如果加上远程的Git库就可以分为四个工作区域。

工作区(Workspace):就是平时存放项目代码的地方
暂存区(Index/Stage):用于临时存放对文件的改动,事实上就是一个文件,保存即将提交到文件列表信息
资源库(Repository):就是安全存放数据的位置,这里有你提交到所有版本的数据,期中HEAD指向最新放入仓库的版本
远程仓库(Remote Directory):就是托管代码的服务器,简单地说就是项目组中的一台电脑用于远程数据交换
Directory:使用Git管理的一个目录,也就是一个仓库,包含我们的工作空间和Git的管理空间
workspace:需要通过Git进行版本控制的目录和文件,这些目录和文件组成了工作空间
.git:存放Git管理信息的目录,初始化仓库的时候自动创建
Index/Stage:暂存区,或者说是一个待提交更新区,在提交进入repo之前,我们可以把所有的更新放在暂存区
HEAD/Local Repo:本地仓库,一个存在本地的版本库,HEAD会只是当前的开发分支(branch)
Stash:隐藏,是一个工作状态保存栈,用于保护/恢复workspace中的临时状态

git状态:

Git管理的文件有三种状态,已修改(modified)、已暂存(staged)、已提交(committed)。

工作流程:

  1. 1. 在工作目录中添加、修改文件;
  2. 1. 将需要进行版本管理的文件放入暂存区域;
  3. 1. 将暂存区域的文件提交到Git仓库;

Git文件操作:

文件的状态:

  1. - **Untraked**:未跟踪,此文件在文件夹种,但未加入到Git库,通过Git add变为Staged
  2. - **Unmodify**:文件已入库,未修改,即版本库中的文件快照内容与文件夹中完全一致,这种类型的文件有两种去处,被修改则变为Modified,如果使用Git rm移出版本库,则成为Untracked文件
  3. - **Modified**:文件已修改,仅仅是修改,无其他操作,这个文件也有两个去处,通过git add进入暂存Staged,使用git checkout则丢弃修改过,返回到Unmodify状态,这个Git checkout即从库中取出文件,覆盖当前文件
  4. - **Staged**:暂存状态,执行Git commit则将修改同步到库中,这是库中的文件和本地文件又变为一致,文件Unmodify状态,执行Git reset HEAD filename取消暂存,文件为Modified

查看文件状态:

  1. # 查看指定文件状态
  2. git status [filename]
  3. # 查看所有文件状态
  4. git status
  5. git add . 添加所有文件到暂存区
  6. git commit -m '提交消息的内容' 提交暂存区的内容到本地仓库 -m就是提交信息

忽略文件:

在某些时候我们不想把一些文件纳入版本控制中,比如数据库,临时文件,设计文件等。

在主目录下建立.gitignore文件,此文件有如下规则:

  1. 1. 忽略文件中的空行或以#号开始的行将会被忽略
  2. 1. 可以使用Linux通配符,例如*号代表多个任意字符,?号代表一个字符,[abc]代表可选字符范围,{}代表可选的字符串等
  3. 1. 如果名称的最前面有一个感叹号!,表示例外规则,不被忽略
  4. 1. 如果名称的最前面是一个路径分隔符/,表示要忽略的文件在此目录下,而子目录中的文件不忽略
  5. 1. 如果名称的最后面是一个路径分隔符/,表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)
  1. # 为注释
  2. *.txt #忽略所有.txt后缀的文件
  3. !test.txt #test.txt除外
  4. /test #仅忽略项目根目录下的TODO文件,不包括其他目录test
  5. test/ #忽略test/目录下的文件
  6. test/*.txt #会忽略test/test.txt文件,但是不包括test/tests/test.txt