git清除add文件_【Git】第四章:git status原理

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 20:52   1340   0

实战:

1、在工作区新建一个TestServiceImpl.java文件,看一下当前的状态:

3fb6ff5a399e02fa8c0f6b88ede4d539.png

此时git status会告诉我们,有文件没有被提交到git仓库中或者是暂存区中过,就是untracked文件状态。

2、执行命令 git add /e/Project413/phase14/moudle-biz/src/main/java/com/wilee/TestServiceImpl.java

469c16e71f0b0f444bb73750aa627f0c.png

TestServiceImpl.java这个文件,从untracked状态,变成了new file状态,第一次进入git托管的一个新文件。

3、执行命令:git commit -m "add TestServiceImpl class"

74f7c569e014444f4e04000295e53903.png

此时,这个文件就进入了一个tracked状态,已经被git开始追踪了。

4、对TestServiceImpl.java进行修改,查看一下状态:

2a5dadbd62bd04626d94bf3003d6b0a9.png

此时变成了changes not staged for commit,modified状态, 已经被追踪了又被修改了但是还没有被staged,staged就是还没有被加入暂存区。

5、再次执行 git add --all . 命令

94d66c7d4390637861a2c7c8e89341c7.png

此时是changed to be committed,modified状态,文件被放入了暂存区,同时等待被commit提交到git仓库中去。

6、删除一个文件:

35ef3f4f62ae63956040b81feb1947a2.png

此时文件的状态是 changed to be committed,deleted状态。

7、再次执行git commit -m "备注"

86f6768cb883c3f056c21f050099efa8.png

此时文件变成了committed,已经提交了。而且git status也是干净的啦。

7种状态映射到3种状态的补充说明

工作目录下面的所有文件都不外乎这两种状态:

tracked

tracked文件是指本来就被纳入版本控制管理的文件,在上次快照中有它们的记录,工作一段时间后,它们的状态可能是未更新(unmodified),已修改(modified)或者已放入暂存区(staged)。

注意:初次克隆某个仓库时,工作目录中的所有文件都属于已跟踪文件,且状态为未修改。

untracked

untracked文件,就是从来没有提交到git版本库的代码文件(也从来没有放入暂存区)。

25c38e402c6c70a39f1c769092c493a3.png

(1)新文件刚创建:untracked,此时仅仅停留在工作区中

(2)git add 新文件:new file,Changes to be committed此时已经被追踪了,放入了暂存区中 => staged

(3)git commit 新文件:committed,已经被追踪了,放入了git仓库中 => committed

(4)修改那个文件:modified,changes not staged for commit,没有加入暂存区,被修改的内容仅仅停留在工作区中 => modified

(5)删除那个文件:deleted,changes not staged to be committed,没有加入暂存区,被删除的内容仅仅停留在工作区中 => modified

(6)git add 删除文件:deleted,changes to be committed,修改的文件版本被已经加入暂存区 => staged

(7)git commit 修改、删除文件:committed,修改后的新版本提交到了git仓库中 => committed

问题:

1、如果add到暂存区的TestServiceImpl.java又被修改了会是什么状态?

29173f0295dfa159cc6a912cc4be9de1.png

此时就会有两个状态的TestServiceImpl.java

2、add到暂存区的TestServiceImpl.java又被修改了再次add后,git status里面会出现两个TestServiceImpl.java吗?

1aaf838fbac448da6e5ab8f030e024e3.png

git commit才会生成一个版本,不论add到暂存区的文件进行多少次修改,只要没有commit则在暂存区,最终add到暂存区的都是一个文件。

比如:修改了TestServiceImpl.java文件add到暂存区,在工作区删除掉TestServiceImpl.java文件后再次add到暂存区的状态如下:

f977403e1642154e1e4858d422723cbc.png

3、修改后的TestServiceImpl.java不添加到暂存区,直接进行commit操作会咋样?

cb0a8ed61cd4ff899bbf86be0609ab72.png

一次git add算做一个版本,每次执行一次git add操作,都是将工作区中所有修改的文件,都作为一个新的版本,放入暂存区,这个版本等待被提交。git commit只会把暂存区的内容提交到仓库中去!

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP