git缓冲区查看_Git缓冲区

一直没仔细研究下git,它的分布式原理与svn的集中式管理还是有很大的不同的,小动手操作了两下

先创建一个仓库

lihui@MacBook  ~/work   master ●✚  mkdir git

lihui@MacBook  ~/work   master ●✚  cd git

lihui@MacBook  ~/work/git   master ●✚  ls

lihui@MacBook  ~/work/git   master ●✚  git init

Initialized empty Git repository in /Users/lihui/work/git/.git/

从最下面的说明可以看出,创建了一个.git目录,应该是跟.svn一个作用,跟踪用的

创建一个文件,然后通过status查看,由于没添加到版本库,所以未知文件

lihui@MacBook  ~/work/git   master  cat hello

2016

lihui@MacBook  ~/work/git   master 

lihui@MacBook  ~/work/git   master 

lihui@MacBook  ~/work/git   master  git status

On branch master

Initial commit

Untracked files:

(use "git add ..." to include in what will be committed)

hello

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

将它添加到版本库,但add是不会同步到版本库的,只是会添加到缓冲区中

lihui@MacBook  ~/work/git   master  git add hello

lihui@MacBook  ~/work/git   master ✚  git status

On branch master

Initial commit

Changes to be committed:

(use "git rm --cached ..." to unstage)

new file: hello

此时git缓冲区和你本地工作区关于hello这个文件内容应该是一致的,可以通过git diff来查看

lihui@MacBook  ~/work/git   master ✚  git diff

lihui@MacBook  ~/work/git   master ✚ 

commit一下,推到版本库里

lihui@MacBook  ~/work/git   master ✚  git commit -m "add new file hello, written 2016"

[master (root-commit) afbcacd] add new file hello, written 2016

Committer: lihui

Your name and email address were configured automatically based

on your username and hostname. Please check that they are accurate.

You can suppress this message by setting them explicitly. Run the

following command and follow the instructions in your editor to edit

your configuration file:

git config --global --edit

After doing this, you may fix the identity used for this commit with:

git commit --amend --reset-author

1 file changed, 1 insertion(+)

create mode 100644 hello

lihui@MacBook  ~/work/git   master 

lihui@MacBook  ~/work/git   master 

lihui@MacBook  ~/work/git   master  git status

On branch master

nothing to commit, working directory clean

此时再将本地工作区的hello文件内容修改下

lihui@MacBook  ~/work/git   master ●  cat hello

2016 04 17

lihui@MacBook  ~/work/git   master ●  git status

On branch master

Changes not staged for commit:

(use "git add ..." to update what will be committed)

(use "git checkout -- ..." to discard changes in working directory)

modified: hello

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

这里status显示已经本地已经有修改了,通过git diff查看

diff --git a/hello b/hello

index 6f6d045..4036a1e 100644

--- a/hello

+++ b/hello

@@ -1 +1 @@

-2016

+2016 04 17

(END)

可见,由于新修改的hello还没有add,所以git缓冲区里还是2016;而本地工作区的hello里添加了04 17

这里还有另一种diff,用来查看git仓库里和git缓冲区的diff,如下

lihui@MacBook  ~/work/git   master ●  git diff --cached

这时候diff的结果只有(END),也就是此时仓库里和缓冲区里是一致的

接着将最新修改推送到缓冲区里

lihui@MacBook  ~/work/git   master ●  git add hello

lihui@MacBook  ~/work/git   master ✚  git status

On branch master

Changes to be committed:

(use "git reset HEAD ..." to unstage)

modified: hello

通过git diff来查看缓冲区和工作区的差别,可以发现两者一致,原因是add了

(END)

通过git diff –cached查看仓库里和缓冲区的差别,可以发现仓库还是老的,缓冲区已经更新了,原因是还没commit

diff --git a/hello b/hello

index 6f6d045..4036a1e 100644

--- a/hello

+++ b/hello

@@ -1 +1 @@

-2016

+2016 04 17

(END)

最后,commit一下最新的修改

lihui@MacBook  ~/work/git   master ✚  git commit -m "modify hello, about add month and day"

[master 391256e] modify hello, about add month and day

Committer: lihui

Your name and email address were configured automatically based

on your username and hostname. Please check that they are accurate.

You can suppress this message by setting them explicitly. Run the

following command and follow the instructions in your editor to edit

your configuration file:

git config --global --edit

After doing this, you may fix the identity used for this commit with:

git commit --amend --reset-author

1 file changed, 1 insertion(+), 1 deletion(-)

lihui@MacBook  ~/work/git   master  git status

On branch master

nothing to commit, working directory clean

不论是git diff还是git diff –cached,结果都会是

(END)

可以通过log查看修改记录

commit 391256e4053349b985c84dce7078e6db512ea964

Author: lihui

Date: Sun Apr 17 16:28:44 2016 +0800

modify hello, about add month and day

commit afbcacd3ad2bed8ba77c65dc4890e126c1335c53

Author: lihui

Date: Sun Apr 17 15:56:21 2016 +0800

add new file hello, written 2016

(END)

最后留下网友的购物车理论:

海绵他奶

Created at 2015-12-4 18:11, Last updated at 2015-12-4 18:11

我觉得嘛,暂存区就像购物车,没到付款的时候你都不确定购物车里的东西全部都是要的。。。每拿一件商品就付一次款。。。那才麻烦大了

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值