工作区的文件状态及转化
查看工作目录内的文件状态
首先进入到对应的工作目录,使用下面的命令,可查看对应目录的文件状态
git status
几种状态的解释:
-
untracked files:未跟踪的文件,指本工作目录内未受git版本管理的文件。
-
change to be commited:列出发生更改且进入暂存状态的文件,可随时提交
-
changers not stages for commit:已经修改了,但还没暂存的文件。
一个文件通常变化周期是:1——>3——>2——>3——>2…
跟踪文件
-
目录内的文件加入到git跟踪
本地工作目录直接新建一个文件,默认需要手动添加到git的跟踪,否则git不知道有这么个文件,添加命令:
git add <file>
此命令上一章已经讲过
-
已被跟踪的文件,取消跟踪
只是取消跟踪:git rm -cached <file>
不但取消跟踪,还要从磁盘删除
git rm <file>
注意,如果直接使用 rm ,(不是git rm)此时会在磁盘直接删除文件,但在未暂存列表中可以看到,准备将删除操作放到暂存区,此时两种做法将其从暂存区删除
1.保存删除操作到暂存区,并发布此次结果
git add <file> git commit -m 'delete file'
2.再次使用
git rm <file>
-
忽略跟踪文件:既不跟踪某些文件,也不要把他们显示在未跟踪列表中。
使用gitignore文件
暂存文件
已被跟踪的文件,被修改后,可把文件放入暂存区
-
把文件放入暂存区
git add <file>
提交更新
把文件从暂存区提交一个快照到git仓库
git commit -m "这里写changelog"
跳过使用暂存区域
git commit -a -m "一次性将所有修改暂存并提交"
移动文件,重命名文件
git mv file1 file2
相当于
mv file1 file2
git rm file1
git add file2
查看更改(diff)
未暂存文件(工作区) <——> 暂存区文件
比较工作目录中文件与暂存区的快照之间的差异
git diff
git仓库(上次commit) <——> 暂存区文件
git diff --staged
或者
git diff --catched
未暂存文件(工作区) <——> git仓库(上次commit)
git diff HEAD
HEAD指向当前分支上最后一次commit的位置