Git进阶:工作区、暂存区与版本库 和 修改、删除、撤销命令 以及一些遇到的bug

参考:
   git 的使用(4)-git暂缓区工作区原理和修改删除等命令
   Git 菜鸟变大神 (三) 工作区、暂存区、版本库之间的关系案例
需求:
  使用需要

在初始化git版本库之后会生成一个隐藏的文件 .git ,可以将该文件理解为git的版本库 repository,而我们自己建立的项目文件夹即工作区 working directory ,在.git 文件夹里面还有很多文件,其中有一个index 文件 就是暂存区也可以叫做 stage ,git还为我们自动生成了一个分支master以及指向该分支的指针head.

从图中可以看出来respository包括分支master和stage, working diretory 可以理解为我们打开开发环境如eclipse,里面的内容即工作区的内容,在工作区里面有的代码以及配置文件等我们需要提交到版本库里面,最终是到了分支master上面,暂存区只是一个临时保存修改文件的地方。

一、工作区、暂存区和版本库的关系及区别

1. 工作区

工作区(working Directory),就是我们项目的目录,也就是我们例子中的learngit 目录,这就是我们所说的工作区,比较简单。

2. 版本库

版本库(Repository) ,工作区有一个隐藏目录“.git”,如上图所示,这个目录不算工作区,而是Git的版本库。我们打开这个.git文件夹,里面有很多文件:

其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

3. 暂缓区

我们先来看一张图,用来区分工作区和暂缓区以及分支的概念:

  • 上图中,工作区就是我们的本地目录,也就是learngit目录,stage就是暂缓区,master分支就是主分支。
  • 我们先把这三个关系说一下,然后我们再具体的例子来说明:
    前面讲了我们把文件往git版本库里添加的时候,是分两步执行的:
    第一步是用“git add”把文件添加进去,实际上就是把文件修改添加到暂存区;
    第二步是用“git commit”提交更改,实际上就是把暂存区的所有内容提交到当前分支。
    因为我们创建git版本库时,git自动为我们创建了唯一一个master分支,所以,现在,commit就是往master分支上提交更改。
    你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。
4.举个例子

git 的使用(4)-git暂缓区工作区原理和修改删除等命令

5. git跟踪的是修改

上面很详细的说了暂存区的一些基本的东西,下面我们通过管理修改的例子,说学习一下为毛git这么快,比其他的版本工具来优秀,因为git跟踪并管理的是修改,并不是文件。

git 中如何定义修改呢:你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改。

SVN中是跟踪的是这个文件,只要这个文件发生变化,我们就认为是有diff的。但是GIT跟踪的是修改,一个修改只要没被add到缓存区,都不算diff。

二、撤销修改

1. 还在工作区
2. 已经add加到暂存区

三、删除文件

Git删除暂存区或版本库中的文件 - 推酷

四、其它

  • 撤销merge
    $ git reset --hard HEAD
    
  • 没有共同祖先的两个分支如何合并?合并后会有什么问题?

"git merge" used to allow merging two branches that have no common base by default, which led to a brand new history of an existing project created and then get pulled by an unsuspecting maintainer, which allowed an unnecessary parallel history merged into the existing project. The command has been taught not to allow this by default, with an escape hatch "--allow-unrelated-histories" option to be used in a rare event that merges histories of two projects that started their lives independently.
使用 git merge 合并两个没有共同祖先的分支,这导致了一个创建的现有项目的全新历史,然后被一个不知情的维护者拉出,这使得不必要的并行历史合并到现有项目中。 --allow-unrelated-histories 参数用于将两个独立的分支(即 没有共同祖先)合并
如果非得将两个没有共同祖先的分支合并,这样的后果是项目的全部文件都当作这次提交的内容,而实际上这次提交的内容应该就是几个不同的文件而已,也就是所有文件都会被认为有冲突。

  • merge远程分支。

A merge B是把A中的改动放到B分支上,B merge A是把B中的改动merge到A中,例如把master分支上的改动移到分支fb_xhf上,可以这样merge。
1、转到master分支上,然后更新master最新更新。
2、再转到fb_xhf上,然后在Local Branches中选择master分支,选择merge,这样就把本地的master merge到 本地仓库的fb_xhf上,然后再选择git push ,这样就把远程master merge到 fb_xhf上, 并会提示: Merged master to fb_xhf。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,783评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,360评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,942评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,507评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,324评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,299评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,685评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,358评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,652评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,704评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,465评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,318评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,711评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,991评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,265评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,661评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,864评论 2 335

推荐阅读更多精彩内容

  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,615评论 9 163
  • 在中国现有的社会环境下,“保姆业”的服务水平,还停留在作坊阶段,没有完备的市场秩序,没有系统的服务品质,更没有相互...
    姬鲲阅读 274评论 0 0
  • 我能想到的幸福,是能伸伸手就能抓到你的手,转转脸就能看到你的笑容。即使不能,也要把青春的时间,留给身边还未远行的人...
    缓缓归kang阅读 232评论 2 1
  • 一些中小型企业,因为规模资源有限,难以招募和保留众多专业人才,管理者开始思考做中小企业培训来提升管理,但又怕花了人...
    Eggyino阅读 344评论 0 2
  • 都说成名要趁早,其实犯浑更要趁早。 昨晚饭后看了会电视,一个情感类的咨询节目,男女主人公是一对已过而立之年的夫妻,...
    芒果西柚阅读 594评论 0 0