告别Git恐惧症!一套课程搞定Win/Mac/Linux三端配置与核心原理

一、Windows11/macOs/Linux 全平台安装Git

1、Windows11/macOs/Linux 全平台安装Git服务

windows/mac 用户最简单就是去官网安装包,安装时执行下一步操作即可。

bash 复制代码
#centos7.X 版本安装
sudo yum install -y git
#centos 8.x 版本
sudo dnf install git
#Ubuntn 系列
sudo apt-get update
sudo apt-get install git

2、验证是否安装成功。

bash 复制代码
git --version
git version 1.8.3.1

$ git --version
git version 2.37.0.windows.1

二、Git初始化配置

Git 配置级别:本地、全局、系统 ,本地优先级大于全局 ,全局大于系统 (local > global > system) 。

bash 复制代码
#全局设置
git config --global user.name "stark"
git config --global user.email "15117995393@126.com"

#本地配置
git config --local user.name "changbao"
git config --local user.email "changbao@126.com"

#查看
git config --list
git config --local --list

#启动颜色
git config --global color.ui auto

.gitignore 是 Git 版本控制系统中用于指定需要忽略的文件或目录的配置文件。它能防止不必要的文件(如编译产物、日志、IDE 配置文件等)被提交到代码仓库,保持仓库清洁。

忽略文件是非常必要的设置环节,如果版本库过大,推送代码的时候提示Push rejected for repository size exceeds limit.,说明Git仓库需要优化了。

三、Git 工作目录、暂存区、本地仓库

Git仓库是一个完整的项目版本控制系统,它包含了项目的所有文件、历史记录和版本信息。仓库是Git的核心概念,所有的版本控制操作都在仓库中进行。

仓库的类型:本地仓库、远程仓库、裸仓库。

工作目录、暂存区、本地仓库的常用操作命令,初始化git 裸仓库命令 git init project

bash 复制代码
工作目录 → [git add] → 暂存区 → [git commit] → 本地仓库

git add files #添加文件到暂存区
git commit -m "添加暂存区" #提交暂存区文件到本地仓库
git reset --hard #还原暂存区文件
git mv git.txt git.log # git变更文件名
git log -n4 --graph # 查看git历史记录

四、Git对象模型

Git 的对象模型是其版本控制能力的核心,通过四种基本对象(blobtreecommittag)实现对代码历史的追踪和管理。这些对象均以 SHA-1 哈希值 作为唯一标识,存储在 Git 仓库的 .git/objects 目录中,且内容一旦创建就不可修改(修改会生成新对象)。

bash 复制代码
commit对象 → tree对象 → blob对象(文件内容)
    ↓           ↓
   tag对象    子tree对象 → blob对象(文件内容)

先查看commit 中的md5、查询出commit中包含的内容,如下图当前的 commit 包含tree、parent、author、committer

bash 复制代码
[stark@localhost git_test]$ git log
commit 1239f65c0254e020e496e56906eb9dd7672e0cd0
Author: changbao <changbao@126.com>
Date:   Mon Oct 6 12:28:32 2025 +0800

    Add file
bash 复制代码
[stark@localhost git_test]$ git cat-file -p 1239f65c0254e020e496e5
tree 2c134fa6eca77335f2a97dacdf23a82baa8bd98f
parent e3e3f77673d2951884143b71f720f48ac275445f
author changbao <changbao@126.com> 1759724912 +0800
committer changbao <changbao@126.com> 1759724912 +0800

继续追踪tree中包含了 git.txt 、index.html两个静态文件

bash 复制代码
# git cat-file -p 查看内容
# git cat-file -t 查看类型
[stark@localhost git_test]$ git cat-file -p 2c134fa6eca77335f2a97dacdf2
100644 blob 5664e303b5dc2e9ef8e14a0845d9486ec1920afd    git.txt
100644 blob dcaf71693e4a4e96739438640406f4f66c7a2dd4    index.html

Git更够快速响应、高性能和高效主要是得益于Git对象模型的关系,同一个blob 的 SHA-1 哈希值 相同,不会重复创建,保证Git仓库的体积,Git会自动选择足够长度的短哈希值来保证唯一性

bash 复制代码
# 完整的SHA-1哈希值
$ git log
commit 58d216bb3808e38d69b21a72ecbde4a730a3d61d (HEAD -> master, origin/master, origin/HEAD, github/master)
Author: stark <15117995393@126.com>
Date:   Thu Oct 9 09:07:27 2025 +0800

# 短哈希值(前7位)
58d216b

如果想深入了解Git对象模型的关系,我准备好了AI搜索词:

bash 复制代码
请用 Mermaid 语法帮我画一个git对象模型 blob、tree、commit 之间的关系图,包括以下步骤
1、commit中包含的tree、parent、author和 committer、size
2、tree里包含子tree和blob

之后会有关于Git和Github的同步、掌握 Git 的高级使用技巧、GitHub 进行团队项目代码管理 GitLab 完成简单的 DevOps 流程等内容和小伙伴们同步。

相关推荐
装不满的克莱因瓶41 分钟前
【踩坑】IDEA提交Git .gitignore忽略文件不起作用
java·git·.gitignore·踩坑
熏鱼的小迷弟Liu2 小时前
【消息队列】RabbitMQ的基本架构?
面试·架构·rabbitmq
源心锁9 小时前
丧心病狂!在浏览器全天候记录用户行为排障
前端·架构
修己xj10 小时前
解决Github QQ邮箱注册难题:绕过“Unable to verify your captcha response”错误
github
cos11 小时前
Fork 主题如何更新?基于 Ink 构建主题更新 CLI 工具
前端·javascript·git
Tony Bai11 小时前
【分布式系统】03 复制(上):“权威中心”的秩序 —— 主从架构、一致性与权衡
大数据·数据库·分布式·架构
AIagenttest11 小时前
2026年智能招聘管理系统测评:从流程协同到算力执行的架构跨越
架构
OpenMiniServer12 小时前
当 AI 成为 Git 里的一个“人”
人工智能·git
Mr_sun.12 小时前
微服务框架课程
微服务·云原生·架构
AI首席情报员_阿布13 小时前
2026 GitHub 最火的 10 个 AI Agent 框架:普通开发者的选型指南
github