前言
最近在查看源码的时候,大多数是在窗口中去使用git,这里记录下我在日常中经常使用的一些命令,方便以后查询。这篇文章分为三个部分:
- 第一个部分介绍Git的一些必备的基础概念。
- 第二个部分介绍一些常用的命令
- 第三个部分根据介绍的常用命令做一个实操学习
如果我们建议看的话,直接从实际操作来进行看就行,其他方面是为了做一些备忘。
1.Git基本概念
这章节主要是说一下Git必须了解的一些概念,便于在使用下面命令的时候不会迷路,文章的内容来源于《精通Git(第二版简体中文)》可以直接去我的资源中下载。
分布式版本控制系统
分布式版本控制系统(Distributed Version Control System,简称 DVCS)面世了。在这类系统中,像 Git、Mercurial、Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像 下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因 为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。
更进一步,许多这类系统都可以指定和若干不同的远端代码仓库进行交互。籍此,你就可以在同一个项目中,分 别和不同工作小组的人相互协作。你可以根据需要设定不同的协作流程,比如层次模型式的工作流,而这在以前 的集中式系统中是无法实现的。
特点
直接记录快照,而非差异比较
Git 和其它版本控制系统(包括 Subversion 和近似工具)的主要差别在于 Git 对待数据的方法。概念上来区分, 其它大部分系统以文件变更列表的方式存储信息。这类系统(CVS、Subversion、Perforce、Bazaar 等等)将 它们保存的信息看作是一组基本文件和每个文件随时间逐步累积的差异。
Git 不按照以上方式对待或保存数据。反之,Git 更像是把数据看作是对小型文件系统的一组快照。每次你提交 更新,或在 Git 中保存项目状态时,它主要对当时的全部文件制作一个快照并保存这个快照的索引。为了高效, 如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。Git 对待数据更像是 一个 快照流。
这是 Git 与几乎所有其它版本控制系统的重要区别。因此 Git 重新考虑了以前每一代版本控制系统延续下来的诸 多方面。Git 更像是一个小型的文件系统,提供了许多以此为基础构建的超强工具,而不只是一个简单的 VCS。 稍后我们在Git 分支讨论 Git 分支管理时,将探究这种方式对待数据所能获得的益处。
文件的三种状态与Git的三种工作区域
Git 有三种状态,你的文件可能处 于其中之一:已提交(committed)、已修改(modified)和已暂存(staged)。
- 已提交(committed):已提交表示数据已经安全的 保存在本地数据库中。
- 已修改(modified):已修改表示修改了文件,但还没保存到数据库中。
- 已暂存(staged):已暂存表示对一个已修改文件的当前版 本做了标记,使之包含在下次提交的快照中。
三个工作区域的概念:Git 仓库、工作目录以及暂存区域。
- Git 仓库,是Git 用来保存项目的元数据和对象数据库的地方。这是 Git 中最重要的部分,从其它计算机克隆 仓库时,拷贝的就是这里的数据。
- 工作目录,是对项目的某个版本独立提取出来的内容。这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘 上供你使用或修改。
- 暂存区域,是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。有时候也被称作“索 引”,不过一般说法还是叫暂存区域。
Git工作流程
基本的 Git 工作流程如下:
- 在工作目录中修改文件。
- 暂存文件,将文件的快照放入暂存区域。
- 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。
如果 Git 目录中保存着的特定版本文件,就属于已提交状态。如果作了修改并已放入暂存区域,就属于已暂存状 态。如果自上次取出后,作了修改但还没有放到暂存区域,就是已修改状态。
2.Git命令
Git基础
初始化仓库
- 在现有目录中初始化仓库
$ git init
使用命令后会在当前文件夹中初始化一个.git文件。
- 克隆现有的仓库
git clone [url] <本地仓库名>
一般情况下不用自己定义“本地仓库名”,直接拉取url后就在本地生成未url中项目的仓库名称。
[url],常见的url可以使用三种协议:http协议
,git协议
,SSH协议
。
如果项目的数据过大,因为Http协议有大小限制,可以直接选择ssh协议进行