git 介绍

一 git 的版本控制原理


像subversion等cvs,使用记录版本差异的形式来进行版本控制,如下图所示:

存储各个版本的差异

git则使用快照的形式,为每一版本生成一个快照,对于没有修改的文件,则指向最后一次修改的快照,如下图所示:

生成版本快照

git中所有的操作几乎都是在本地中操作的,无需网络连接到文件存储服务器,你只需在有网的时候将文件push到文件存储服务器中去就行了。git 在保存文件时为每一个文件都生成了一个索引,通过索引来引用文件,如果在上传文件的过程中发生了失败,git会检测到,保证了文件的完整性。

Git 有三种状态,你的文件可能处于其中之一:已提交(committed)、已修改(modified)和已暂存(staged)。 已提交表示数据已经安全的保存在本地数据库中。 已修改表示修改了文件,但还没保存到数据库中。 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。

由此引入 Git 项目的三个工作区域的概念:Git 仓库、工作目录以及暂存区域。

git 创库,工作目录,暂存区域

Git 仓库目录是 Git 用来保存项目的元数据和对象数据库的地方。 这是 Git 中最重要的部分,从其它计算机克隆仓库时,拷贝的就是这里的数据。工作目录是对项目的某个版本独立提取出来的内容。 这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。 有时候也被称作“索引”,不过一般说法还是叫暂存区域。

基本的 Git 工作流程如下:

1 在工作目录中修改文件

2 暂存文件,将文件的快照放入暂存区域

3 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录

如果 Git 目录中保存着的特定版本文件,就属于已提交状态。 如果作了修改并已放入暂存区域,就属于已暂存状态。 如果自上次取出后,作了修改但还没有放到暂存区域,就是已修改状态。

二 git 命令行

1.  git config

初次运行git前,我们需要使用git config 来修改git 配置文件,git 的配置文件有三处:

1. /etc/gitconfig    包含了系统中的所有用户信息及创建的创库,可用 --system 访问

2. ~/.gitconfig       包含了当前用户的配置信息,可以用--global访问

3. 当前项目中的config文件(.git/config),包含了当前创库的配置信息

用户信息

用户身份的标识,每一次提交修改时都会使用用户信息来记录是谁做了修改

配置用户身份信息

文本编辑器

配置默认文本编辑器了,当 Git 需要你输入信息时会调用它,如果未配置,默认将使用vim

配置默认编辑器

检查配置信息

检查所有的配置信息

检查所有的配置信息

检查单个配置项的配置信息

检查单个配置项的信息

2 git 创库的基本操作

初始化一个创库

在你的工程目录中(或空目录),输入 git init 命令将在当前目录中建立一个创库,创库建立好后,git 将为我们自动的创建一个.git目录,该目录包含了该创库的所有的配置信息。

初始化一个创库

如果工程目录中有文件,init后,这些文件是不会被跟踪的,需要我们提交到git暂存区域,然后在提交快照到创库中去。

跟踪文件

克隆现有的创库

git clone 命令会克隆整个创库而不仅仅是创库中的对象数据

克隆一个现有创库

git clone url [new_repository_name]

调用命令后会在当前目录中新增一个codes目录,该目录包含了现有创库中的所有的数据。通过第三个参数,修改现有创库在本地中的名称。

url支持多种协议(http[s]://(http协议), git://(git协议), user@server:path/(ssh 协议)),由配置git server 时决定。

3 更新创库

git 创库中的对象数据的变化周期

变化周期

如果一个文件未加入git中的话,它是不会被跟踪的,不会有后面的已修改,已添加到暂存区域,已提交等状态

常用的命令总结:

1 git add 命令可以用来添加追踪,会直接提交到暂存区中去,也用来提交修改到暂存区中去

2 git reset HEAD 将提交到暂存区中的内存撤销

3 git resert ID 可以将整个库回退到某个指定的提交ID版本

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

推荐阅读更多精彩内容

  • Git简单介绍 什么是GitGit是一款源代码管理工具(版本控制工具) 什么又是源代码:凡是由我们手写的代码都称之...
    Eazer阅读 340评论 0 0
  • 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统。 二:SVN与Git的最主要的区别? SVN是集...
    2015哈哈哈阅读 457评论 1 3
  • git 是什么? git 是目前世界上最先进的分布式版本控制系统。 git与SVN的主要区别 Git是分布式版本控...
    紧张的牛排阅读 4,351评论 0 17
  • 开场白## 有人每天坚持走步和瑜伽,却还是总觉得身体不舒服,好吧,我承认这个人就是我,我总是感觉大腿憋涨难受,最近...
    耕玫竹堂阅读 1,228评论 0 1
  • 感恩公公今天花钱给儿子买鞋给我买衣服,买午饭,感恩今天公公为我们花钱买所有的东西,谢谢你我爱你 感恩婆婆今天回来那...
    e61610af7098阅读 95评论 0 0