Git 起步

Git

起步

关于版本控制系统

本地版本控制系统

本地版本控制系统,大多都是采用某种简单的数据库来记录文件的历次更新差异。如 RCS 等。

在这里插入图片描述

如何让在不同系统上的开发者协同工作?

集中化的版本控制系统

集中化的版本控制系统(Centralized Version Control Systems,简称 CVCS),有一个单一的集中管理的服务器,保存所有文件的修订版本,管理员可以掌控开发者的权限,开发者通过客户端连到这台服务器,取出最新的文件或者提交更新。如 CVS、Subversion 以及 Perforce 等。

在这里插入图片描述

排队提交?中央服务器单点故障?中央数据库损坏?

分布式版本控制系统

分布式版本控制系统(Distributed Version Control System,简称 DVCS),客户端的克隆操作,把代码仓库完整地镜像下来,包括完整的历史记录,也就是对代码仓库的完整备份。像 Git、Mercurial、Bazaar 以及 Darcs 等。在这里插入图片描述

这类系统都可以指定和若干不同的远端代码仓库进行交互。可以在同一个项目中,分别和不同工作小组的人相互协作。可以根据需要设定不同的协作流程,比如层次模型式的工作流,而这在以前的集中式系统中是无法实现的。且任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。

Git 简史

Git 诞生于一个极富纷争大举创新的年代。

1991-2002 年间,绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上。到 2002 年,开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。

到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,收回了 Linux 内核社区免费使用 BitKeeper 的权力。 这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)基于使用 BitKeeper 时的经验教训,开发出自己的版本系统。 他们对新的系统制订了若干目标:

  • 速度
  • 简单的设计
  • 对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
  • 完全分布式
  • 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)

自诞生于 2005 年以来,Git 日臻成熟完善,在高度易用的同时,仍然保留着初期设定的目标。 它的速度飞快,极其适合管理大项目,有着令人难以置信的非线性分支管理系统。

Git 简介

直接记录快照,而非差异比较

Git 和其它版本控制系统(包括 Subversion 和近似工具)的主要差别在于 Git 对待数据的方式。

其它大部分系统以文件变更列表的方式存储信息,通常称作 基于差异(delta-based) 的版本控制。

在这里插入图片描述

在 Git 中,每当提交时,会对当时的全部文件创建一个快照并保存这个快照的索引。 为了效率,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。 Git 对待数据更像是一个 快照流

在这里插入图片描述

近乎所有操作都是本地执行

在 Git 中,除了与服务器之间进行按需同步之外,绝大多数操作都只需要访问本地文件和资源

Git 保证完整性

Git 中所有的数据在存储前都使用 SHA1 哈希计算,以哈希值来索引。这意味着不可能在 Git 不知情时更改任何文件内容或目录内容。 SHA-1 哈希看起来是这样:

# 基于 Git 中文件的内容或目录结构计算出来的,由 40 个十六进制字符组成的字符串
24b9da6552252987aa493b52f8696cd6d3b00373

Git 一般只添加数据

Git 几乎不会执行任何可能导致文件不可恢复的操作。 同别的 VCS 一样,未提交更新时有可能丢失或弄乱修改的内容。但是一旦提交快照到 Git 中, 就难以再丢失数据,特别是如果定期的推送数据库到其它仓库的话。

三种状态,三个阶段

  • 已修改(modified): 表示修改了文件,但还没保存到数据库中
  • 已暂存(staged): 表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中
  • 已提交(committed): 表示数据已经安全地保存在本地数据库中

这会让 Git 项目拥有三个阶段:工作区、暂存区以及 Git 目录。

在这里插入图片描述

  • 工作区: 从 Git 仓库的压缩数据库中对项目的某个版本独立提取出来的文件,放在磁盘上供使用或修改。
  • 暂存区: 一个保存了下次将要提交的文件列表信息的一般在 Git 仓库目录中的文件, 按照 Git 的术语叫做“索引”,不过一般说法还是叫“暂存区”。
  • Git 仓库目录:Git 用来保存项目的元数据和对象数据库的地方。从其它计算机克隆仓库时,复制的就是这里的数据。

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

命令行

Git 有多种使用方式。 可以使用原生的命令行模式,也可以使用 GUI 模式,这些 GUI 软件也能提供多种功能。 只有在命令行模式下你才能执行 Git 的 所有 命令,而大多数的 GUI 软件只实现了 Git 所有功能的一个子集以降低操作难度。

安装 Git

在 Linux 上安装

在 Linux 上用二进制安装程序来安装基本的 Git 工具,可以使用发行版包含的基础软件包管理工具来安装。

以 Fedora 为例,可以使用 dnf:

sudo dnf install git-all

在基于 Debian 的发行版上,如 Ubuntu,请使用 apt:

sudo apt install git-all

Git 官方网站上有在各种 Unix 发行版的系统上安装步骤,网址为 https://git-scm.com/download/linux 。

在 Windows 上安装

官方版本可以在 Git 官方网站下载。 打开 https://git-scm.com/download/win 。

初次运行 Git 前的配置

Git 自带一个 git config 的工具来帮助设置控制 Git 外观和行为的配置变量。

  • git config --system 读写/etc/gitconfig 文件,修改系统上 所有 仓库的通用配置。(系统配置文件,需要管理员或超级用户权限。)
  • git config --global 读写~/.gitconfig 或 ~/.config/git/config 文件,只针对 当前用户 的仓库生效。
  • git config --local 读写当前使用仓库的 Git 目录中的 config 文件(即 .git/config),只针对该仓库生效。默认情况下用的就是它。

每一个级别会覆盖上一级别的配置,所以 .git/config 的配置变量会覆盖 /etc/gitconfig 中的配置变量。

在 Windows 系统中,Git 会查找 $HOME 目录下(一般情况下是 C:\Users$USER )的 .gitconfig 文件。 Git 同样也会寻找 /etc/gitconfig 文件,但只限于 MSys 的根目录下,即安装 Git 时所选的目标位置。在 Windows 上使用 Git 2.x 以后的版本,那么还有一个系统级的配置文件 C:\ProgramData\Git\config 。此文件只能以管理员权限通过 git config -f 来修改。

可以通过以下命令查看所有的配置以及它们所在的文件:

git config --list --show-origin

用户信息

安装完 Git 之后,设置用户名和邮件地址,这些信息会写入到每一次提交中,不可更改。

git config --global user.name "XXX"
git config --global user.email XXXX@example.com

获取帮助

三种等价的方法可以找到 Git 命令的综合手册

git help <verb>
git <verb> --help
man git-<verb>

获得 git config 命令的手册

git help config
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值