小白的故事
本故事纯属虚构,如有雷同,^0^那可太巧了
回到家的小白,想着今天发生的事,为什么git status
出来的提示信息不一样?为什么git status
出来的提示信息不一样?为什么git status
出来的提示信息不一样?
想着想着他就睡着了,梦里他遇到了linus大神,linus带他来到了一个神秘的机构。在这个房间里有2个人,还有一个大大的大屏幕。
每次大屏幕上显示git add
,就会有一份文件到达一个人的手里,他会把信息进行整理。当大屏幕上显示git commit
。第一个人就会把整理的内容放到第二个人的桌子上,然后回来继续工作。
小白疑惑的看向linus大神,大神和蔼的告诉他“小白,你不是一直奇怪,为什么git status
出来的提示信息不一样?”,这就是你要的答案。
小白仔细打量着房间里的一切,第一个人的办公桌上有一个牌子,上面写着”stage”。
第二个人的办公桌上同样有一个牌子,上面写着”HEAD”。
小明若有所思,抬起头的时候,发现linus大神已经不见了。他冲出房门,发现街上根本没有大神的踪影,只有房子上高高挂起的牌匾写着”版本库”三个打字。
他大声的呼喊,这时耳边传来“叮铃铃叮铃铃”的响声。
小明从梦中醒来一看,哇,还有半小时就八点60了,飞快起身,背上背包冲向公司。
距离上班还有1秒钟的时候,小白打卡成功。
打开电脑,想起昨天遇到的情形,好像自己明白了什么,到网上一查,原来如此。
git是分为工作区和版本库的。代码发生更改后,执行
git add
代码会放到代码库的暂存区(stage),当执行git commit
时代码会形成版本记录(HEAD),并且删除暂存取的记录。
当我们执行git status
时,git会将工作区(当前的代码)与暂存区的记录进行比较,如果暂存区没有记录,则会跟做过记录的版本作比较。从而提示你哪个文件发生过修改。
明白了这些,小白开始反思昨天看到的提示。
1 | $ git status |
Untracked files
列出的是新建的文件,还没有被add和commit过,所以提示你(use "git add <file>..." to include in what will be committed)
,这表示需要进行git add
操作
1 | $ git status |
Changes not staged for commit
列出被修改的文件,这时候文件还没有被add和commit。这时就是比较工作区和HEAD得出的结果。modified: readme.md
意思是这个文件发生了更改。
了解了不同提示的原因,小白果断git add
git commit
开始开发新功能。
小结
git是分为工作区和版本库的。代码发生更改后,执行git add
代码会放到代码库的暂存区(stage),当执行git commit
时代码会形成版本记录(HEAD),并且删除暂存取的记录。工作区可以简单理解为项目目录,每次项目更改都会记录,这些变更记录就是版本库。
下面是各种状态
1 | git status |