600词说清Git

作者: Mary Rose Cook
原文地址
git操作的涉及的位置:
“working-copy”<————>”index”<————>”database”
“working-copy”<—————————-————>”database”

  1. 创建目录 ”alpha”, 在”alpha”目录下创建文本文件 ”number.txt”, 设置文件内容为 “first”.
  2. 到 ”alpha” 目录下执行 “git init”.

该命令将 “alpha” 设置为 Git仓库.

  1. 执行命令 “git add number.txt”, 将 “number.txt” 加入到 “index”.

“index” 是Git所管理之文件之列表. “index” 映射文件名到文件内容. 此时它包含一个映射 “number.txt -> first”. 这个命令的执行也在Git的对象数据库里增加了一个blob对象, blob对象里包含了”first”文本.

  1. 执行命令 “commit -m first”. 这个命令导致了三件事:
  1. 在Git的对象数据库里创建了一个”tree”对象. 这个对象代表了”alpha”目录顶层的 ”items”的列表. 这个对象有一个指针指向之前通过 ”git add” 创建的包含了first的blob对象.
  1. 创建了一个”commit”对象, 代表了你刚刚 ”commit” 的仓库的版本.
  2. 将 ”master” 分支指向了刚刚创建的 ”commit” 对象.
  3. 执行命令 ”git clone . ../beta”.

这条命令创建了一个新的目录, 目录名为”beta”. “beta” 已经被初始化为一个Git仓库. “alpha” 对象数据库中的对象被复制到了”beta”中. “beta”仓库里的“master”分支和”alpha”中指向相同的”commit”对象. “beta”中的”index”被设置为”first commit”中的内容. 文件“number.txt”从index中得到更新.

  1. 进入”beta”目录. 将”number.txt”的内容修改为”second”. 执行”git add number.txt”和”git commit -m second”.

commit对象被创建, 并且有一个指针指向它的parent— “first” commit. commit命令将master分支指向”second commit”.

  1. 回到”alpha”目录. 执行”git remote add beta ../beta”命令.

这个命令将beta仓库设置为一个远程仓库.

  1. 执行命令 “git pull beta master”
    一条pull命令相当于多条命令:
  1. 执行 “git fetch beta master”. 这条命令找到”beta”仓库里的“socond commit”的对象们, 把它们拷贝到”alpha” 仓库. 命令将alphpa中的beta的的记录的master指向第二个commit对象. FETCH_HEAD被更新, 用来显示master brach取自beta仓库.
  1. 执行命令 ”git merge FETCH_HEAD”. FETCH_HEAD被读出. 它显示beta仓库上得master brach是最新获得的分支. 可知alpha的记录中的beta的master指向的commit对象, 正是第二个commit. alpha的master brach指向第一个commit. 这意味着, 要完成这次合并, merge命令只要将master分支指向第二个commit. merge命令更新index, 将第二个commit的内容映射入. 将工作备份从index镜像.
  2. 执行命令 “git brach red”.

命令创建一个名为”red”的分支, 指向第二个commit object.

  1. 执行 “git checkout red”.

checkout前, HEAD指向 master分支. 现在HEAD指向了red分支. 命令使red分支成为了”当前分支”.

  1. 设”number.txt”内容为”third”. 执行”git add numbers.txt”, 再执行“git commit -m third”
  2. 执行”git push beta red”.

此命令寻第三个commit的对象, 并从alpha仓库复制至beta仓库. 并将beta仓库的red分支指向第三个commit对象.

  1. 若你想学习Git的内里和细节, 可以读文章: Git由内到外.

(If you would like to learn about the internals of Git in detail, you can read my essay, Git from the inside out.)

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

推荐阅读更多精彩内容