Git官方教程:起步 - 关于版本控制
要对Git有个大框架上的认识,首先要明白四个区。
一 四个区
① Workspace:工作区
② Stage:暂存区
③ Repository:本地仓库
④ Remote:远程仓库
主要的命令也都写在上面,要注意的是:
1) Repository需要手动更新,不然总是上一次fetch/clone拉取的内容。
2) Workspace的内容需要三步才能上传到Remote:
① add:从Workspace到Stage;
② commit:从Stage到Repository(需要附加说明);
③ push:从Repository到Remote。
应用 —— show diff
这个是Git官方教程中的图示:
来源:文件的三种状态
这里的working diretory,staging area和git directory分别就是之前说的Wordspace,Stage和Repository,这三个区域保存的文件分别对应三种状态:
已修改(modified):只是在当前Wordspace区中(已经Control+S),但是还没有add进Stage区中 ;
已暂存(staged):在Stage区中,还没有commit到Repository区中;
已提交(committed):已经commit,保存在Repository中了。(有没有push到远程仓库不重要)。
看一个命令:show diff
来源:管理修改 的评论区
实验一下:
动手试试看:写一个todolist.txt
① 写一个"3",保存
git add todolist.txt
git commit todolist.txt -m "the first commit"
② 写一个"2",保存
git add todolist.txt
③ 写一个"1",保存
不操作
根据之前知识,知道:
看三个 git diff指令的区别:
git diff:
很明显:区别是-2,+1,即Working区和Stage区的difference
git diff Head:
很明显:区别是-3,+1,即Working区和本地Branch区的difference
git diff --cached(注意有两个杠):
很明显:区别是-3,+2,即Stage区和本地Branch区的difference
所以,那张图是正确的:
当然,第一次git clone下来时,Stage区是空的,此时show diff显示的Workspace和Repository的区别。