Git的诞生

Git是由Linus Torvalds(Linux 之父)创建的,诞生于2005年。当时Linux内核项目因社区成员破解BitKeeper协议而失去对该商业软件的免费使用权,Linus因此开发了Git。Git在短短10天内完成基础开发,以其高效、可靠和分布式的特性迅速成为流行的版本控制工具。2008年GitHub的上线进一步推动了Git的普及。

Git简介

Git是一种分布式控制系统(Distributed Version Control System, DVCS),其与传统的差异管理(Delta-based)方法不同,Git 不仅仅存储文件的变更(即差异),还存储着整个项目在特定时间点的完整副本,也就是快照。你的每一次克隆(git clone)操作,都是对当前数据库的一次完整备份。

Git的这一特性意味着:当你不小心删除了整个数据库,而幸运地在你的本地或者开发伙伴那正好克隆了最新的数据库,那么你不需要焦头烂额!因为你可以快速地恢复数据库的内容~

image-20240707114155917

Git提交时,会对修改或者新增文件创建一个新的快照,而对于没有改动的文件仅进行一次链接,以指向原始文件。

正是由于这种机制,你执行的几乎所有Git操作,也只是往Git数据库添加数据,而很难从Git数据库中删除数据。

如下图所示,虚线框表示链接目标文件,实线框表示创建新的快照。代码仓库包括了FileA~C三个文件,V2时,创建了A1和C1快照,而B仅做快照链接(因为它没有任何修改)

源自:书籍-ProGit

Git在存储前均会计算校验和,并通过校验和来引用。校验机制为:SHA-1散列。

Git有三种状态,分别为:

  • 已修改(modified:修改了文件,但还没保存到数据库

  • 已暂存(staged):对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中

  • 已提交(committed):数据已经安全地保存在本地数据库

Git有三个区域:

  • 工作区:存放某个版本的拷贝内容;

  • 暂存区(索引区):保存了下次将要提交的文件列表信息

  • 仓库区:保存项目的元数据和对象数据库

Git的三步走工作流程:

  • 拷贝与修改:一个项目版本,形成工作区,在工作区修改文件;

  • 暂存:将当前的一些修改进行暂存,为下一次提交做准备;

  • 提交:提交暂存区文件,形成新的快照,并将快照永久存储到Git仓库;

暂存不是必须的步骤,可以跳过暂存进行提交,但这也许并不是一个好习惯,不是么?

安装与升级

安装

前往:Git ,按照下图所示步骤下载安装

本文在编辑时,Git版本为:2.45.2

点击图标进入下载页面

image-20240706190211964

选择需要的版本,无特殊需求选“1”即可

image-20240706190319591

image-20240707005219003

选择你的安装目录,emmm…,C盘也没什么不好的~

image-20240706190927712

选择一个你常用的编辑器即可,VSCode,为什么不呢?

image-20240707004036563

选择一个默认分支名,此处选择了默认,因为后续可以修改,不是么?

image-20240707004220779

无特殊需求,后续一直默认安装即可

image-20240707004946625

更多安装方式可见:Git-Installing

升级

同安装一样,前往官方下载最新版本Git,进行安装

配置你的Git

Git包括了三种配置文件,分别应用于不同的权限,分别为:

  • 系统级:配置字--system,对所有用户有效, /etc/gitconfig
  • 用户级:配置字--global,只针对当前用户,为~/.gitconfig 或 ~/.config/git/config 文件
  • 项目级:配置字--local,只对当前仓库, .git/config

这三种配置选项具有覆盖关系,即:--local覆盖--global--system--global覆盖--system。你可以通过git config --list --show-origin查看每一级别的所有配置文件及每个配置文件中具有的配置变量。以下为一些必要的基本配置:

1
2
3
4
git config --global user.name "你的名字"
git config --global user.email xxxx@xxxx.xxx
git config --global core.editor xxxx

可视化GIT管理

我期望找到的是一款MAC、WINDOWS、LINUX通用的且可免费商用的版本管理工具。

SourceTree