告别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 的对象模型是其版本控制能力的核心,通过四种基本对象(blob、tree、commit、tag)实现对代码历史的追踪和管理。这些对象均以 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 流程等内容和小伙伴们同步。

相关推荐
2分钟速写快排7 小时前
孔乙己的茴字有多少种写法?|AI 对话实时通信的三种实现
前端·javascript·github
真上帝的左手10 小时前
30. 技术专题-‌应用框架组件-分布式架构
分布式·架构·系统架构·分布式架构
wangruofeng11 小时前
同一行代码,百种渲染:Asuka、React Native 与 Flutter 跨平台渲染机制深度拆解
前端·github
杨凯凡13 小时前
IT日报|2026-11-13:GitHub 大规模凭据攻击、Signal 形式化验证、Claude 新模型与 AI 安全诉讼
人工智能·安全·github
Decay__13 小时前
SQLServer 索引与 SQL 优化 —— 聚集索引、非聚集索引、覆盖索引、碎片维护与执行计划
运维·数据库·sql·mysql·架构
Dawson Zhu15 小时前
【分布式训练④】张量并行与序列并行:把单层参数切碎分到多张卡
人工智能·语言模型·架构·aigc·agi
liuzheng662116 小时前
我给 Agent 测试注入了 72 种谎话,它抓住了 44 种
github
码客-ygluu18 小时前
一个通用游戏数据服务器
c++·架构
炫酷的大高个20 小时前
98% 连跑 20 次只剩 67%,我算了大模型重试账
人工智能·架构·开源
用户66026761187920 小时前
AI 代码上线前的第 24 道门禁:上线失败时,怎样在 10 分钟内退回?
后端·架构