Git中文件的4种状态Untracked、Unmodify、Modified、Staged - 嘿十三 - 博客园git 学习资料推荐廖雪峰https://www.liaoxuefeng.com/wiki/896043488029600 git库所在的文件夹中的文件大致有4种状态 Untracked: 未跟踪,
https://www.cnblogs.com/thirteen-yang/p/13878118.htmlgit文件的四种状态
git库所在的文件夹中的文件大致有四种状态:
Untracked:未跟踪,此文件在文件夹中,但没有加入到git库,不参与版本控制。 通过
git add
状态变为Staged。
Unmodify:文件已入库,未修改。即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为
Modified
. 如果使用git rm
移出版本库, 则成为Untracked
文件。Modified:文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过
git add
可进入暂存staged
状态, 使用git checkout
则丢弃修改过, 返回到unmodify
状态, 这个git checkout
即从库中取出文件, 覆盖当前修改。Staged:暂存状态. 执行
git commit
则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify
状态. 执行git reset HEAD filename
取消暂存, 文件状态为Modified
git四个工作区域
没有被git add过的修改记录全部在workspace(工作区),所有已经被git add的记录全部在Index(暂存区),已经commit过的都以各个版本的形式存在于Repository版本库。
已经被tracked的文件发生的更改也是需要每次进行add,这样才会将到此为止的修改放入stage区。也就是说add本质上是两个作用:add新文件、add更改。
新建文件--->Untracked
使用add命令将新建的文件加入到暂存区--->Staged
使用commit命令将暂存区的文件提交到本地仓库--->Unmodified
如果对Unmodified状态的文件进行修改---> modified
如果对Unmodified状态的文件进行remove操作--->Untracked
工作区和暂存区的一些删除与恢复指令
- 丢弃workspace、INdex区所有改动,回滚到之前的版本库中的状态
git reset
-
回滚到旧版本后,要切换到更新的版本时,目标版本的commit_id:
git reflog
-
丢弃某个文件在working区发生的改变
git checkout -- filename
-
把某个已经add到stage区的文件清除
git reset HEAD filename
-
恢复误rm某个working区文件(注意该文件必须之前存在于版本仓库)且本次删除还未commit,怎么检出恢复
git checkout -- filename
-
恢复误rm某个working区文件(注意该文件必须之前存在于版本仓库),但本次rm已经commit
git reset HEAD filename git checkout -- filename
这里reset将文件变成untracked的文件,再checkout恢复working区到版本库最后一个版本