廖雪峰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其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”)

原文地址:https://www.cnblogs.com/tan-wm/p/9327578.html