Git入门(二)

工作区和暂存区

Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念。

  • 工作区 :就是.git文件所在的目录,我们一般把文件存放的目录。
  • 版本库 :工作区有一个隐藏的目录.git文件夹,这个就是Git的版本库。

Git 的版本库中存了很多东西,其中最重要的就是成为stage的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD.

image.png

前边说过,我们把文件往Git版本库里添加的时候,是分两步执行的:

  1. git add 文件名 把文件添加进去,实际上就是把文件修改添加到暂存区。
  2. git commit提交更改,实际上是把暂存区的所有内容提交到当前分支。
    因为我们创建Git版本库时,Git自动为我们创建一个唯一一个master分支,现在,git commit 就是往master分支提交更改。

需要提交的文件修改通通放到暂存区,然后一次性提交暂存区所有的修改。

例:先对readme.txt做个修改,比如加上一行内容,再新建一个文件LICENSE.
然后git status看一下状态:

image.png

Git非常清楚地告诉我们,readme.txt被修改了,而LICENSE还从来没有被添加过,所以它的状态是Untracked。

现在,使用两次命令git add,把readme.txt和LICENSE都添加后,用git status再查看一下:

image.png

此时 暂存区状态就变成这样了,如图:


image.png

所以,git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支。
git commit -m "更改文件并添加了新文件"
一旦git commit 完后,工作区就是"干净的".

image.png

管理修改

为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件。
执行这个操作:

执行这个操作:

第一次修改 -> git add -> 第二次修改 -> git commit

这样执行后,可以发现第二次的修改其实并没有生效,原因就是Git只对在暂存区的修改执行commit,而第二次修改后未执行git add 命令,也就是说未提交到暂存区,所以,尽管git commit后,第二次修改依旧不生效。

正确的做法
第一次修改 -> git add -> 第二次修改 ->git add  -> git commit

撤销修改

  • .git checkout --文件名:在工作区中修改完文件,想要撤销,(此时还没有放到暂存区,也就是还未执行git add),
  • git reset HEAD filegit checkout --文件名:已经更改并提交到暂存区后想要撤销修改。

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退,不过前提是没有推送到远程库。

删除文件

rm -rf file
执行完删除命令后,git status看终端显示:

image.png

现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit
另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:git checkout -- file1.txt

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

本文是学习廖雪峰老师写的Git的笔记整理便于自己复习,原文地址https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

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

推荐阅读更多精彩内容

  • Git 命令行学习笔记 Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来...
    sunnyghx阅读 3,910评论 0 11
  • Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来。这样一来,任何一处协同...
    __silhouette阅读 15,866评论 5 147
  • 琅琊令第35期——算计 武侠江湖 那群人又过来了。 “工厂失火,抢救出来的物品全部清仓处理了……”车篷上的高音喇叭...
    冥欢阅读 303评论 8 4
  • 我知道自己将走的是一条怎样的路,心里也谨记着该记的规则,可我就是没能安全抵达终点,还是会在同一条路上犯各种各样的错...
    图文不符阅读 233评论 0 0
  • 1. 随着年龄的增长,我们也渐渐有了自己的思想,不再受父母约束和控制,脾气也变得越来越大,我们把所有的好脾气都献给...
    Ai橘子阅读 3,804评论 0 1