引用规格 纵观全书,我们已经使用过一些诸如远程分支到本地引用的简单映射方式,但这种映射可以更复杂. 假设你添加了这样一个远程版本库: $ git remote add origin https://github.com/schacon/simplegit-progit 上述命令会在你的 .git/config 文件中添加一个小节,并在其中指定远程版本库的名称(origin).URL 和一个用于获取操作的引用规格(refspec): [remote "origin"] url = htt…
Git 内部原理 无论是从之前的章节直接跳到本章,还是读完了其余章节一直到这——你都将在本章见识到 Git 的内部工作原理 和实现方式. 我们发现学习这部分内容对于理解 Git 的用途和强大至关重要.不过也有人认为这些内容对于初学 者而言可能难以理解且过于复杂. 因此我们把这部分内容放在最后一章,在学习过程中可以先阅读这部分,也 可以晚点阅读这部分,这取决于你自己. 无论如何,既然已经读到了这里,就让我们开始吧. 首先要弄明白一点,从根本上来讲 Git 是一个内容寻 址(content-addr…
Git 内部原理 不管你是从前面的章节直接跳到了本章,还是读完了其余各章一直到这,你都将在本章见识 Git 的内部工作原理和实现方式.我个人发现学习这些内容对于理解 Git 的用处和强大是非常重要的,不过也有人认为这些内容对于初学者来说可能难以理解且过于复杂.正因如此我把这部分内容放在最后一章,你在学习过程中可以先阅 读这部分,也可以晚点阅读这部分,这完全取决于你自己.(伯乐在线注:如果你对Git还不了解,建议从本Git系列第一篇文章开始阅读) 既然已经读到这了,就让我们开始吧.首先要弄明白一点…
以下内容转载自:http://www.open-open.com/lib/view/open1328070620202.html Git 内部原理 不管你是从前面的章节直接跳到了本章,还是读完了其余各章一直到这,你都将在本章见识 Git 的内部工作原理和实现方式.我个人发现学习这些内容对于理解 Git 的用处和强大是非常重要的,不过也有人认为这些内容对于初学者来说可能难以理解且过于复杂.正因如此我把这部分内容放在最后一章,你在学习过程中可以先阅 读这部分,也可以晚点阅读这部分,这完全取决于你自己…
维护与数据恢复 有的时候,你需要对仓库进行清理 - 使它的结构变得更紧凑,或是对导入的仓库进行清理,或是恢复丢失的内容. 这个小节将会介绍这些情况中的一部分. 维护 Git 会不定时地自动运行一个叫做 “auto gc” 的命令. 大多数时候,这个命令并不会产生效果. 然而,如果有太多松散对象(不在包文件中的对象)或者太多包文件,Git 会运行一个完整的 git gc 命令. “gc” 代表垃圾回收,这个命令会做以下事情:收集所有松散对象并将它们放置到包文件中,将多个包文件合并为一个大的包文件,…
说到Git大家应该都非常熟悉,几乎每天都会用到它.在日常使用过程中,我们貌似并不需要关注其内部的原理,只需要记住那几个常用的命令,就可以说自己是会Git的人了.可是,事实真的是这样子的吗?今天我们就来聊聊那些不太被关注到的内部原理. 引言 首先我们要明白的一点就是,Git是一个内容寻址(content-addressable)文件系统,并在此之上提供了一个版本控制系统的用户界面. 还有一点需要明白的就是,我们日常使用的命令(checkout.commit)对用户更加友好,因此被称为高层(porc…
Git本质上是一套内容寻址文件系统,在此之上提供了VCS的用户界面. Git底层命令(plumbing) vs 高层命令(porcelain) Git的高层命令包括checkout.branch.remote等总共约30个,这些命令主要交由用户在命令行界面中使用.而除了高层命令之外,Git还提供一些底层命令,这些命令通常不用于命令行界面,而是交由其它工具和自定义脚本使用. .Git的目录结构 git init 命令会在文件夹中创建一个.git目录,用于存放所有版本管理相关的内容,其目录结构如下:…
本人计划写一些关于<git内部原理>的文章 计划每周一篇…
引用规格(refspec):就是在 .git/config 里面那个配置远程仓库的东西 [remote "origin"]url = https://github.com/test/demofetch = +refs/heads/*:refs/remotes/origin/* 格式:由一个可选的 + 号和<src>:<dst>组成 +:即使在不能快进的情况下也强制更新引用 <src>:代表远程版本库中的引用 <dst>:远程引用在本地所对…
Git 引用 我们可以借助类似于 git log 1a410e 这样的命令来浏览完整的提交历史,但为了能遍历那段历史从而找到所有相关对象,你仍须记住 1a410e 是最后一个提交. 我们需要一个文件来保存 SHA-1 值,并给文件起一个简单的名字,然后用这个名字指针来替代原始的 SHA-1 值. 在 Git 里,这样的文件被称为“引用(references,或缩写为 refs)”:你可以在 .git/refs 目录下找到这类含有 SHA-1 值的文件. 在目前的项目中,这个目录没有包含任何文件,…