git学习(二)

工作区和暂存区

git设计中有一些概念,了解这些概念对于深入学习git有很大的帮助。其中就有工作区
和暂存区。

工作区

工作区就是创建的工作目录,这个目录下的所有文件都需要在git的管理之下。文件的创
建,修改,删除都会被git记录。

暂存区

另外一个就是.git。这个称为版本库。版本库里存了很多东西,其中一个就是暂存区,所
有的修改只有在提交到暂存区,才能被commit。

1
2
3
4
5
6
7
8
9
10
位于分支 master
要提交的变更:
(使用 "git reset HEAD <文件>..." 以取消暂存)

修改: readme.txt

未跟踪的文件:
(使用 "git add <文件>..." 以包含要提交的内容)

LICENSE

git add 是将文件修改添加到暂存区
git commit 是将暂存区的所有内存提交到当前分支上

管理修改

上一节提到暂存区和工作区,git管理的是修改,而不是文件文件。为什么这样说呢,实验
一下。
原readme.txt中的内容:

1
2
git is a version control tool
git is so nice

第一次修改后的内容:

1
2
3
git is a version control tool
git is so nice
this is first test

使用命令:

1
2
3
4
5
6
7
8
9
10
11
12
xxx:~/workplace/demo$ git add readme.txt
xxx:~/workplace/demo$ sudo git commit -m "first"
[master e76954f] first
1 file changed, 3 insertions(+)
create mode 100644 readme.txt
xxx:~/workplace/demo$ git status
位于分支 master
无文件要提交,干净的工作区
xxx:~/workplace/demo$ cat readme.txt
git is a version control tool
git is so nice
this is first test

第二次修改的内容:

1
2
3
4
git is a version control tool
git is so nice
this is first test
this is second test

使用一下命令:

1
2
3
4
5
6
7
8
9
   xxx:~/workplace/demo$ sudo git commit -m "test"
位于分支 master
尚未暂存以备提交的变更:
(使用 "git add <文件>..." 更新要提交的内容)
(使用 "git checkout -- <文件>..." 丢弃工作区的改动)

修改: readme.txt

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

由上面执行结果可以,第二次的修改并未被提交。
这也说明,只有将修改添加到暂存区才能进行后一步的提交。也能看出来git的确
是对修改进行管理的,只有当修改添加到暂存区,才能把修改提交到分支上。文件已经
被修改了,但是并不会被提交。

撤销修改

上一次讲过git的时光魔法,利用git reset可以让文件回到某一状态。但是针对的
是提交后的。每次reset的标记也是commit id。
还有一种状况需要考虑,就是在修改没有commit之前,如何让文件恢复到某一时刻的
状态。
git checkout就是专门负责则这个功能的。

1
2
3
4
5
6
7
8
9
10
11
xxx:~/workplace/demo$ cat readme.txt
git is a version control tool
git is so nice
this is first test
this is second test
this is modify.
xxx:~/workplace/demo$ git checkout readme.txt
xxx:~/workplace/demo$ cat readme.txt
git is a version control tool
git is so nice
this is first test

可以从上面的命令清楚的看到,git checkout命令就相当于撤回键一样,可以让修
该回到之前的一个状态。
还有一个需要考虑的是,如果你的修改已经被提交,那么需要使用reset来回到上一个
状态。

删除修改

1
2
3
4
5
xxx:~/workplace/demo$ rm readme.txt
xxx:~/workplace/demo$ sudo git commit -m "delete"
[master 94de890] delete
1 file changed, 1 insertion(+)
xxx:~/workplace/demo$

本文标题:git学习(二)

文章作者:learner66

发布时间:2018年05月22日 - 19:29:06

最后更新:2018年06月01日 - 15:40:49

原始链接:https://learner66.github.io/2018/05/22/git-learning-2/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

------ 本文结束,感谢您的阅读------