Git - Git教程 07:管理修改
管理修改
1 - 为什么 Git 比其他版本控制系统设计得优秀,因为 Git 跟踪并管理的是修改,而非文件
2 - 什么是修改 ?比如你新增了一行,这就是一个修改;删除了一行,也是一个修改;更改了某些字符,也是一个修改;删了一些又加了一些,也是一个修改;甚至创建一个新文件,也算一个修改
3 - 为什么说 Git 管理的是修改,而不是文件呢?下面就来验证
① 现在我们对 LICENSE.txt 做第 1 次的修改,添加内容 Git tracks changes .
$ cat LICENSE.txt
hello,Git! Git tracks changes .
添加并查看
1 $ git add LICENSE.txt 2 $ git status 3 On branch master 4 Changes to be committed: 5 (use "git restore --staged <file>..." to unstage) 6 modified: LICENSE.txt
② 第 2 次在 LICENSE.txt 文件中添加内容 Fuck ! 并 commit
1 $ git commit -m "just do it_LICENSE.txt" 2 [master 552c2fc] just do it_LICENSE.txt 3 1 file changed, 1 insertion(+), 1 deletion(-)
查看状态:你会发现第 2 次的修改并没有被提交!我们回顾一下操作过程:第 1 次修改是 git add;而第 2 次修改是 git commit
1 $ git status 2 On branch master 3 Changes not staged for commit: 4 (use "git add <file>..." to update what will be committed) 5 (use "git checkout -- <file>..." to discard changes in working directory) 6 7 modified: LICENSE.txt 8 9 no changes added to commit (use "git add" and/or "git commit -a")
Git 管理的是修改,当你使用 git add 命令后,在工作区的第 1 次修改就被放入暂存区,准备提交;但是在工作区的第 2 次修改并没有放入暂存区,git commit 只负责把暂存区的修改提交,这也就是第 1 次的修改被提交,而第 2 次的修改并不会被提交
③ 此时可用 git diff HEAD -- fileName 命令,查看工作区和版本库里面最新版本的区别 :发现第 2 次的修改确实没有被提交
1 $ git diff HEAD -- LICENSE.txt 2 diff --git a/LICENSE.txt b/LICENSE.txt 3 index 2d3ed27..f9c6e71 100644 4 --- a/LICENSE.txt 5 +++ b/LICENSE.txt 6 @@ -1 +1 @@ 7 -hello,Git! Git tracks changes . 8 +hello,Git! Git tracks changes .Fuck !
④ 进行提交
$ git add LICENSE.txt $ git commit -m "0003G" [master 042515e] 0003G 1 file changed, 1 insertion(+), 1 deletion(-)