告别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 流程等内容和小伙伴们同步。

相关推荐
radient3 小时前
初识Agent、Prompt、Function Coding、MCP
后端·程序员·架构
逛逛GitHub3 小时前
被干宕机的 GitHub 解读神器,已经收录 10W+ 项目了。
github
鸽鸽程序猿3 小时前
【Git】 远程操作 与 标签管理
git
jh_cao3 小时前
(3)SwiftUI 的状态之上:数据流与架构(MVVM in SwiftUI)
ios·架构·swiftui
文火冰糖的硅基工坊4 小时前
《投资-93》价值投资者的认知升级与交易规则重构 - 衡量公司价值的本质是在公司的整个存续期间能够创造多少自由现金流,而不是当下有多少现金流。
重构·架构·产业链
银安5 小时前
Git篇(2):文件的三个区域——工作区、暂存区与本地仓库
git
银安5 小时前
Git篇(1):Git初识与学习顺序
git
叫我詹躲躲5 小时前
Git和GitHub终极秘籍:50个命令让你从新手秒变专家
git·github
~央千澈~6 小时前
git添加远程仓库报错To add an exception for this directory解决方案-优雅草卓伊凡
git