一个木匠

zqqf16 的个人博客

理解 Git 的暂存区

虽然用了几个月的 Git,但是今天才了解了“Index(暂存区域)”这个东西,惭愧啊。。。

在公司用的是 CVS,因此用git add的时候就以为和cvs add的作用是一样的,把新文件加到代码库。后来学了一招git commit -a,还以为-a就是--all的意思。稀里糊涂地用到现在。。。

Git 中的暂存区类似于任务列表,当对工作区的文件做了修改之后,执行

git add filename

就会把修改的文件加到这个任务列表中,当执行

git commit

的时候,暂存区中的改动就会提交到版本库中,而在“git add”之后所做的改动就不会被提交。

比如,我现在 Readme.md 文件中增加了一行,然后执行git add Readme.md。然后再加一行,执行git commit,这样我提交的只是第一次修改的内容。

命令

git checkout filename

是用暂存区中的文件来替换工作区中的文件。

命令

git checkout HEAD

是用HEAD指向的版本库中的文件来替换暂存区和工作区的文件。

好了,先这么多了。通过这件事总结出一个道理:经验有时候会形成思维定势。