六、Git工作区和版本库的关系


Git总的来说,分为两大块:  工作区和版本库

工作区:就是你的源代码文件目录,比如 d:\work

版本库:就是你工作区目录下的那个隐藏子目录d:\work\.git 。版本库又分为暂存区和分支库。

GIT

工作区

版本库:d:\work\.git

d:\work

file1.java

file2.java

暂存区

分支库

git add 后,文件就是暂存到这里

HEAD指针

MAST等分支库

 

回顾一下建立第一个版本库的过程

1,  git add file.java  其实就是把工作区的file.java文件,提交到版本库的暂存区。

2,  git commit 就是把暂存区的内容,提交到分支库(当前分支)

我们创建版本库git init的时候,git就自动给我们建立了一个分支master ,所以我们的提交就是提交到这个master分支上的。

 

用实验来说明一下:首先新建一个文件,然后查看状态。

=========

[root@localhost myPHP]# touch file1.java

[root@localhost myPHP]# git status

位于分支master

未跟踪的文件:

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

        file1.java

提交为空,但是存在尚未跟踪的文件(使用"git add" 建立跟踪)

=========

可以看到,git 对于工作区的任何改动,都会进行监测。这个时候的状态如下:

工作区

版本库

file1.java

暂存区

分支库

 

HEAD

MAST

即只有工作区存在file1.java 文件,git 版本库中还没有任何信息。

那么我们git add file1.java然后在看看

=========

[root@localhost myPHP]# git add file1.java

[root@localhost myPHP]# git status

位于分支master

要提交的变更:

  (使用 "git reset HEAD <文件>..." 以取消暂存)

        新文件:  file1.java

=========

这个时候,工作区和版本库是如下状态:

工作区

版本库

file1.java

暂存区

分支库

file1.java

HEAD

MAST

然后,我们继续提交

[root@localhost myPHP]# git commit -m"file1.java"

[master 23dc945] file1.java

 1file changed, 0 insertions(+), 0 deletions(-)

 create mode 100644 file1.java

[root@localhost myPHP]# git status

位于分支 master

无文件要提交,干净的工作区

[root@localhost myPHP]#

 

这个时候,工作区和版本库是如下状态:

工作区

版本库

file1.java

暂存区

分支库

HEAD -> 指向MAST

MAST

  -- file1.java

也就是说,提交时把暂存区的内容,提交到当前的分支库里,提交完后,暂存区就清空了。这个时候,工作区因为没有什么修改,所以是“干净的工作区”。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值