Git学习记录03

目录

[toc]

chapter(三)

3.1 暂存区概念对Git很重要

暂存区是什么呢? 我们先谈谈别的概念:

  1. 工作区(woking directory) :工作区就是能看到的电脑目录。 如:
toto@pc:~/code/testGit$ pwd
/home/toto/code/testGit

命令:pwd后显示的目录,就是工作目录。

  1. 仓库有名版本库(repository) : 多说无益,直接看看
toto@pc:~/code/testGit$ ls -ah
.  ..  .git  helloword.cpp

这个.git是什么呢?是的!就是版本库!

Figure3.1-版本库

*Figure3.1*显示的版本库中里就有一个*stage*,这个*stage*就是暂存区

图片太形象了,我们在工作区,使用命令`git add`,将`helloword.cpp`提交到*stage*中。

之前使用过`git init`,那时Git就为我们创建了一个分支`master`,以及指向`master`的指针`HEAD`

再使用命令`git commit`,有把再*stage*(暂存区)内容提交到了分支`master`中!

这样就能理解为何之前说`git add`可以执行很多次,那是因为`git add`只是把它放到暂存区中了。只有执行了`git commit`才会放在分支`master`中。 3. 所以暂存区的概念就很清晰了!

3.2 再次理解暂存区的概念

  1. 有了helloword.cpp,我感觉不够用,因为拿到代码的人可能不懂这是干什么呢?所以,我必须写一个说明文档README.txt vim README.txt 写下如下内容:
This document is a description!
The name is README.txt!

在看下状态:

toto@pc:~/code/testGit$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)

  README.txt
    
nothing added to commit but untracked files present (use "git add" to track)

可以看到Git告诉我们,新增加了一个README.txt

  1. 我又想在helloword.cpp中增加东西。 vim helloword.cpp 写下如下内容:
#include<iostream>   
int main()
{
       std::cout << "This is a program that test Git!" << std::endl;
       std::cout << "test git status" << std::endl;
       std::cout << "test git status2" << std::endl;// 新增的一行
       int a = 1;
       return 0;
}

在查看下状态:

toto@pc:~/code/testGit$ git status
On branch master
Changes not staged for commit:
 (use "git add <file>..." to update what will be committed)
 (use "git checkout -- <file>..." to discard changes in working directory)

	modified:   helloword.cpp
    
Untracked files:
  (use "git add <file>..." to include in what will be committed)

	README.txt

no changes added to commit (use "git add" and/or "git commit -a")

可以看到Git告诉我们helloword.cpp被修改了,而README.txt还未被添加!

  1. git add
    toto@pc:~/code/testGit$ git add helloword.cpp README.txt
    toto@pc:~/code/testGit$ git status
    On branch master
    Changes to be committed:
      (use "git reset HEAD <file>..." to unstage)
    
    	new file:   README.txt
    	modified:   helloword.cpp
    
    toto@pc:~/code/testGit$ 

可以看到暂存区(stage)已经被放了两个文件

Figure3.2

  1. git commit
    toto@pc:~/code/testGit$ git commit -m "understand stage"
    [master 7064df2] understand stage
     2 files changed, 3 insertions(+)
     create mode 100644 README.txt
    toto@pc:~/code/testGit$ git status
    On branch master
    nothing to commit, working tree clean

此时,版本库就是这样子了:

Figure3.3


3.4 暂存区补充

如果一个文件没有进行git add,那还能git commit吗?

仔细想想!

如果有了暂存区的概念,这个答案就很简单:

未从工作区 git add暂存区,就无法从暂存区 git commitmaster中!


3.5 暂存区总结

总结就是自己实践去跟着做一遍!

请我喝咖啡

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,您说多少就多少

打开支付宝或微信扫一扫,即可请我喝咖啡哦