GIT仓库所在的目录称为工作目录,这个很好理解,我们的工程就在这里,工作时也是在这里做修改。

在工作目录中的文件被分为两种状态,一种是已跟踪状态(tracked),另一种是未跟踪状态(untracked)。只有处于已跟踪状态的文件才被纳入GIT的版本控制。如下图:

gitlab中文件夹移动 git 移动文件_git

当我们往工作目录添加一个文件的时候,这个文件默认是未跟踪状态的,我们肯定不希望编译生成的一大堆临时文件默认被跟踪还要我们每次手动将这些文件清除出去。

用以下命令可以跟踪文件:



git add <file>



上图中右边3个状态都是已跟踪状态,其中的灰色箭头只表示untracked<-->tracked的转换而不是untracked<-->unmodified的转换,新添加的文件肯定算是被修改过的。

那么,staged状态又是什么呢?这就要搞清楚GIT的三个工作区域:本地数据(仓库)目录(Git directory),工作目录(Working directory),暂存区(staging area),

我们在编辑的时候处于working directory中;
编辑完了,通过git add命令将文件置于staging area;
运行git commit命令时提交到仓库中。

如下图所示:

gitlab中文件夹移动 git 移动文件_git_02

    git directory就是我们的本地仓库.git目录,里面保存了所有的版本信息等内容。

  working driectory,工作目录,就是我们的工作目录,其中包括未跟踪文件及已跟踪文件,而已跟踪文件都是从git directory取出来的文件的某一个版本或新跟踪的文件。

  staging area,暂存区,不对应一个具体目录,其时只是git directory中的一个特殊文件。

  当我们修改了一些文件后,要将其放入暂存区然后才能提交,每次提交时其实都是提交暂存区的文件到git仓库,然后清除暂存区。而checkout某一版本时,这一版本的文件就从git仓库取出来放到了我们的工作目录。

 文件状态的查看

那么,我们怎么知道当前工作目录的状态呢?哪些文件已被暂存?有哪些未跟踪的文件?哪些文件被修改了?所有这些只需要一个命令,git status

gitlab中文件夹移动 git 移动文件_右键_03

在项目中添加一个文件

gitlab中文件夹移动 git 移动文件_右键_04

最下面的这个就是代表未跟踪的

 

清理本地working directory

有的时候,我们想放弃本地所有的修改,包括新增的文件,在Tortoisegit中需要两个操作来完成。
在仓库文件夹上右键-Tortoisegit-revert,这个操作会回滚掉本地所有的修改文件。
在仓库文件夹上右键-Tortoisegit-clean up,这个操作会删除掉没有进行版本追踪的文件。

开始状态

gitlab中文件夹移动 git 移动文件_右键_05

revert

gitlab中文件夹移动 git 移动文件_暂存区_06

在看状态

gitlab中文件夹移动 git 移动文件_暂存区_07

clean up

gitlab中文件夹移动 git 移动文件_右键_08

未跟踪文件消失

gitlab中文件夹移动 git 移动文件_git_09