首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >告别Git恐惧症!一套课程搞定Win/Mac/Linux三端配置与核心原理

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

原创
作者头像
stark张宇
修改2025-10-09 15:55:40
修改2025-10-09 15:55:40
540
举报
文章被收录于专栏:GitGitstark张宇

一、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

五、HEAD 指针

HEAD 是 Git 中一个特殊的指针,指向当前所在的分支引用具体提交,它代表了工作目录的当前状态,存储在 .git/HEAD 文件中。HEAD 的两种状态,一种是附着状态(Attached HEAD),一种是分离状态(Detached HEAD)

代码语言:bash
复制
# HEAD 指向某个分支引用
[git@bogon .git]$ cat HEAD
ref: refs/heads/master
# 此时 HEAD 间接指向该分支的最新提交

# HEAD 直接指向具体的提交哈希
[git@bogon clone_test]$ cat .git/HEAD
58d216bb3808e38d69b21a72ecbde4a730a3d61d

# 常见场景:
git checkout <commit-hash>    # 检出特定提交
git checkout <tag>           # 检出版本标签

六、.git 目录作用与结构

.git 目录,Git 仓库的核心数据库,包含版本控制所需的所有元数据和对象,隐藏目录,位于项目根目录下。

主要文件和目录结构如下:

代码语言:bash
复制
.git/
├── HEAD                          # 当前 HEAD 指针
├── config                        # 项目特定配置
├── description                   # 仓库描述
├── index                         # 暂存区索引
├── hooks/                        # 客户端和服务端钩子脚本
├── info/                         # 全局排除文件
├── objects/                      # 所有 Git 对象数据库
├── refs/                         # 引用目录
│   ├── heads/                   # 分支引用
│   ├── tags/                    # 标签引用
│   └── remotes/                 # 远程跟踪分支
└── logs/                        # 引用变更日志

这个内容是对Git对象模型的深入讲解,核心组件详解,操作objects/ - Git 对象数据库。

代码语言:bash
复制
# 查看 blob 对象
git cat-file -p <blob-hash>

# 查看 tree 对象
git cat-file -p <tree-hash>

# 查看 commit 对象
git cat-file -p <commit-hash>

操作objects/ - refs/ 引用存储

  • refs/heads/ - 本地分支
  • refs/tags/ - 标签
  • refs/remotes/ - 远程跟踪分支
代码语言:bash
复制
# 查看分支引用
cat .git/refs/heads/main

# 查看所有引用
git show-ref

config - 仓库配置,内容如下:

代码语言:bash
复制
[stark@bogon]$ cat .git/config
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[user]
        name = stark
        email = stark@126.com

HEAD 指针是 Git 工作流的导航器,指向当前工作基点,.git 目录是 Git 的数据库,存储所有版本控制信息,理解这两者的关系有助于深入掌握 Git 工作原理。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Windows11/macOs/Linux 全平台安装Git
  • 二、Git初始化配置
  • 三、Git 工作目录、暂存区、本地仓库
  • 四、Git对象模型
  • 五、HEAD 指针
  • 六、.git 目录作用与结构
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档