廖雪峰git教程学习笔记
对git来说,没有消息就是最好的消息
使用 git init 把当前目录变为git仓库
要在仓库里加入文件,先在仓库目录新建这个文件后,比如新建一个文件xiaobai.txt,内容为:
在命令行里输入 git status,出现提示xiaobai为untracked file,即没有加入仓库:
git的工作机制为:
仓库所在的目录文件夹为工作区,但工作区里的文件不一定全都是版本库(repository)里的,版本库里又分为暂缓区stage和另一个区域master,有一个指向master的指针HEAD,代表当前版本库,使用 git add文件名 命令会将新文件或修改的文件加入stage缓存区,每一个文件都要使用一次这个命令!!然后再使用 git commit –m”注释” 命令来一次性把这些改动加入master,注意git commit命令只会把stage中的内容提交,如果在某些文件使用git add命令后,又新建或改动了一些文件(或者二次修改这些已经git add的文件),则使用git commit命令不会把这些后来者加入版本库(已经git add 的文件后来的修改也不会被提交,而提交的是二次修改之前的内容,如果要提交二次修改的内容,则要再次使用git add命令)!每一次有新文件加入master或原有的文件发生改动,就会产生一个新的版本。
把xiaobai.txt加入缓存区(没有消息就是最好的消息):
再使用 git status 查看状态:
提示缓存区内有新文件等待commit到master
使用 git commit –m”new xiaobai” 一次性把缓存区内的东西提交到master:
3 insertions指的是xiaobai里有3行内容
此前版本库中已存在文件akk.txt:
修改其内容:
再使用git status ,提示版本库里的文件被修改:
此时要使用 git add akk.txt 才能加入缓存区stage,使用 git commit –m”some common” 才能写入版本库,形成一个新的版本,若使用 git checkout – akk.txt 会放弃上一部的修改!打开akk.txt,发现又回到了原来的样子:
如果想看akk.txt具体修改了什么内容,则使用git diff “文件名” 命令:
(红色为原来的内容,绿色为修改后的内容)
也可以使用 git diff HEAD – 文件名 查看工作区和版本库里最新版本的区别:
如果修改后文件已使用git add命令加入stage,则使用 git reset HEAD 文件名 命令会使他退出stage:
总之,被修改但没有加入stage的用git checkout命令会被删除修改,已加入stage的用git reset HEAD 文件名 命令会被退出stage
使用 git rm 文件名 删除文件(只能删除版本库中的,无法删除工作区的文件):
发现工作区目录中已经没有了xiaobai.txt文件,删除文件后一样要使用git commit命令提交新的版本:
在使用git commit提交新版本之前,git checkout -- 文件名 命令还可以起到恢复文件的作用!(git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”)