Git 本地操作入门:版本控制基础、跨平台部署与仓库核心流程


🔥草莓熊Lotso: 个人主页
❄️个人专栏: 《C++知识分享》 《Linux 入门到实践:零基础也能懂》
✨生活是默默的坚持,毅力是永久的享受!


🎬 博主简介:


文章目录

  • 前言:
  • [一. Git初识:为什么需要版本控制](#一. Git初识:为什么需要版本控制)
  • [二. Git 安装:跨平台部署步骤](#二. Git 安装:跨平台部署步骤)
    • [2.1 Linux 系统(CentOS/Ubuntu)](#2.1 Linux 系统(CentOS/Ubuntu))
    • [2.2 Windows 系统](#2.2 Windows 系统)
  • [三. Git 本地仓库核心:概念与初始化](#三. Git 本地仓库核心:概念与初始化)
    • [3.1 三大核心区域:工作区、暂存区、版本库](#3.1 三大核心区域:工作区、暂存区、版本库)
    • [3.2 初始化本地仓库](#3.2 初始化本地仓库)
  • [四. Git 配置:设置用户身份](#四. Git 配置:设置用户身份)
  • [五. Git 本地核心操作:添加、提交与查看历史](#五. Git 本地核心操作:添加、提交与查看历史)
    • [5.1 添加文件到仓库(工作区→暂存区→版本库)](#5.1 添加文件到仓库(工作区→暂存区→版本库))
    • [5.2 查看提交历史](#5.2 查看提交历史)
    • [5.3 查看 .git 文件](#5.3 查看 .git 文件)
  • 结尾:

前言:

在软件开发的日常中,"版本混乱""修改无法追溯""协作冲突" 是绕不开的痛点。Git 作为分布式版本控制的标杆工具,其本地操作是解决这些问题的第一步。它能让你清晰记录代码的每一次改动,像 "时光机" 一样回溯历史版本。本文将从版本控制的必要性讲起,带你完成 Git 的跨平台安装,理解工作区、暂存区、版本库的协同逻辑,并掌握文件添加、提交、历史查看等核心操作,为你筑牢 Git 使用的 "第一块基石"。


一. Git初识:为什么需要版本控制

在没有版本控制工具之前,我们管理文件版本的方式往往是"复制副本"--比如:

这种方式存在明显痛点:

  • 版本混乱:随着版本的不断增多,无法清晰的知道每个版本修改的内容
  • 协作困难:多人协作不方便,同时修改一个文件容易造成一些问题

Git的出现彻底解决了这些问题:它可以跟踪文本文件的每一次修改(如新增一行,删除一个单词),记录修改历史,支持随时回退到任意版本。可以控制电脑上所有格式的文件,对于我们来说,Git最重要的就是可以帮助我们管理软件开发项目中的源代码文件!
关键注意事项

Git仅能跟踪文本文件的改动(如代码,txt文件),可以清晰的显示修改细节。对于图片,视频等二进制文件,虽然也能控制,但无法跟踪文件的变化,只能看到内存大小的变化。


二. Git 安装:跨平台部署步骤

Git 最初基于 Linux 开发,现已支持 Linux、Unix、Mac、Windows 四大主流平台,不同系统的安装流程简洁高效,具体步骤如下:

2.1 Linux 系统(CentOS/Ubuntu)

CentOS示例

bash 复制代码
# 1. 检查是否已安装 Git(未安装会提示 "command not found")
[root@VM-4-4-centos ~]# git

# 2. 安装 Git,普通账户需要sudo,root不用
[root@VM-4-4-centos ~]# (sudo) yum -y install git

# 3. 验证安装(显示版本号即成功)
[root@VM-4-4-centos ~]# git --version

Ubuntu 示例

bash 复制代码
# 1. 检查是否已安装 Git
git

# 2. 安装 Git(系统会提示安装命令,直接执行即可)
sudo apt-get install git -y

# 3. 验证安装
git --version

2.2 Windows 系统

参考链接Git使用教学


三. Git 本地仓库核心:概念与初始化

3.1 三大核心区域:工作区、暂存区、版本库

Git 本地工作流的核心是 "工作区→暂存区→版本库" 的协同,三者的定义与作用如下:

  • 工作区:电脑上实际编写代码或存储文件的目录,是用户可直接操作的文件区域;
  • 暂存区 :英文叫stage或index。一般存放于 .git 目录下的index(.git/index)文件中,是工作区与版本库的 "中间站",用于临时存放待提交的修改,可灵活选择需提交的内容;
  • 版本库 :又名仓库,工作区下的隐藏目录.git,是 Git 管理版本的核心,包含暂存区、分支指针、对象库等关键信息,切勿手动修改该目录下的文件,否则可能破坏仓库。
  • 图中左侧为工作区,右侧为版本库。Git 的版本库中存了很多东西,其中最重要的就是暂存区。
  • 在创建 Git 版本库时,Git会为我们自动创建一个唯一的 master 分支,以及指向 master 的一个指针叫 HEAD。(分支和HEAD的概念以后还会再讲的)
  • 当对工作区修改(或新增)的文件执行 git add 命令时,暂存区目录树的文件索引会被更新。
  • 当执行提交操作 git commit 时,master分支会做相应的更新,可以简单理解为暂存区的目录树会被真正写到版本库中。

三者的协作流程为在工作区修改文件→通过git add将修改添加到暂存区→通过git commit将暂存区内容提交到版本库

3.2 初始化本地仓库

要对文件进行版本控制,需先创建 Git 仓库,通过 git init 命令实现,具体步骤如下所示:

bash 复制代码
# 创建目录
[root@VM-4-4-centos ~]# mkdir gitcode
[root@VM-4-4-centos ~]# cd gitcode
[root@VM-4-4-centos gitcode]# ls
# 初始化仓库
[root@VM-4-4-centos gitcode]# git init
Initialized empty Git repository in /root/gitcode/.git/
[root@VM-4-4-centos gitcode]# ls -a
.  ..  .git

我们会发现,当前目录下多了一个 .git 的隐藏文件,.git目录是 Git 来跟踪管理仓库的,不要去手动修改这个目录里面的文件,不然乱改了,就把 Git 仓库破坏了
其中包含了 Git 仓库的诸多细节,感兴趣的朋友可以看看:

bash 复制代码
# 查看目录结构
[root@VM-4-4-centos gitcode]# tree .git/
.git/
|-- branches
|-- config
|-- description
|-- HEAD
|-- hooks
|   |-- applypatch-msg.sample
|   |-- commit-msg.sample
|   |-- post-update.sample
|   |-- pre-applypatch.sample
|   |-- pre-commit.sample
|   |-- prepare-commit-msg.sample
|   |-- pre-push.sample
|   |-- pre-rebase.sample
|   `-- update.sample
|-- info
|   `-- exclude
|-- objects
|   |-- info
|   `-- pack
`-- refs
    |-- heads
    `-- tags

9 directories, 13 files

四. Git 配置:设置用户身份

Git 每次提交都会记录提交者信息,因此初始化仓库后需优先配置用户名和邮箱,命令如下:

bash 复制代码
# 配置姓名和邮箱,查看配置(验证是否配置成功)
[root@VM-4-4-centos gitcode]# git config user.name "Lotso"
[root@VM-4-4-centos gitcode]# git config user.email "1236475737@qq.com"
[root@VM-4-4-centos gitcode]# git config -l
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
user.name=Lotso
user.email=1236475737@qq.com

# 全局配置(当前电脑所有Git仓库通用)
[root@VM-4-4-centos gitcode]# git config --global user.name "Your Name"  # 替换为你的昵称
[root@VM-4-4-centos gitcode]# git config --global user.email "email@example.com"  # 替换为你的邮箱

# 若需删除配置(global可选)
[root@VM-4-4-centos gitcode]# git config --global --unset user.name
[root@VM-4-4-centos gitcode]# git config --global --unset user.email
  • 若不加--global选项,配置仅对当前仓库生效(需在仓库目录下执行命令);
  • 建议用户名和邮箱与后续远程仓库(如 Gitee、GitHub)的账号信息一致,避免后续协作权限问题。

五. Git 本地核心操作:添加、提交与查看历史

5.1 添加文件到仓库(工作区→暂存区→版本库)

Git 提交文件需经过 "暂存区" 过渡,支持单个文件、多个文件或目录的批量操作,具体示例如下:
场景 1:新增单个文件并提交

  1. 在工作区新建ReadMe文件:vim ReadMe,输入内容(如 "hello Lotso");
  2. 将文件添加到暂存区:git add ReadMe
  3. 提交到版本库:git commit -m "commit my first file",其中-m后的 "commit my first file" 是提交说明,必须填写,用于记录本次提交的目的,补充一下,这里也可以指定文件提交。

提交成功后,Git 会提示 "1 file changed, 2 insertions (+)",表示 "1 个文件被修改,新增 2 行内容",符合预期。

bash 复制代码
[root@VM-4-4-centos gitcode]# vim ReadMe
[root@VM-4-4-centos gitcode]# cat ReadMe
hello Lotso
[root@VM-4-4-centos gitcode]# git add ReadMe
[root@VM-4-4-centos gitcode]# git commit -m "commit my first file"
[master 1e3f5b8] commit my first file
 1 file changed, 1 insertion(+)
 create mode 100644 ReadMe

场景 2:批量添加多个文件

  1. 新建 3 个空文件:touch file1 file2 file3
  2. 分多次添加到暂存区(或用git add .添加当前目录所有文件):
  3. 一次性提交:git commit -m "add 3 files"
bash 复制代码
[root@VM-4-4-centos gitcode]# touch file1 file2 file3
# 也可以用 git add .
[root@VM-4-4-centos gitcode]# git add file1 file2 file3
[root@VM-4-4-centos gitcode]# git commit -m "add 3 file3"
[master 54cffd0] add 3 file3
 3 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 file1
 create mode 100644 file2
 create mode 100644 file3

5.2 查看提交历史

使用git log命令可查看所有提交记录,支持多种格式展示:

  • 完整历史:git log,显示每个版本的作者、提交时间、提交说明及commit id(版本号);
  • 简化展示:git log --pretty=oneline,一行显示一个版本,包含commit id和提交说明。
bash 复制代码
[root@VM-4-4-centos gitcode]# git log
commit 54cffd0089a9fb8f82cfe1b2833002dfa46209f4
Author: Lotso <3208137151@qq.com>
Date:   Wed Oct 29 10:39:20 2025 +0800

    add 3 file3

commit 1e3f5b88458d0a62d39f73d6b4819e326bbc873a
Author: Lotso <3208137151@qq.com>
Date:   Wed Oct 29 10:36:19 2025 +0800

    commit my first file
bash 复制代码
[root@VM-4-4-centos gitcode]# git log --pretty=oneline
54cffd0089a9fb8f82cfe1b2833002dfa46209f4 add 3 file3
1e3f5b88458d0a62d39f73d6b4819e326bbc873a commit my first file

其中,commit id是由 SHA1 算法计算生成的唯一标识,用于定位具体版本;HEAD -> master表示当前处于master主分支(Git 默认创建的分支)。

5.3 查看 .git 文件

先来看看我们的 .git 的目录结构:

bash 复制代码
[root@VM-4-4-centos gitcode]# tree .git/
.git/
|-- branches
|-- COMMIT_EDITMSG
|-- config
|-- description
|-- HEAD
|-- hooks
|   |-- applypatch-msg.sample
|   |-- commit-msg.sample
|   |-- post-update.sample
|   |-- pre-applypatch.sample
|   |-- pre-commit.sample
|   |-- prepare-commit-msg.sample
|   |-- pre-push.sample
|   |-- pre-rebase.sample
|   `-- update.sample
|-- index
|-- info
|   `-- exclude
|-- logs
|   |-- HEAD
|   `-- refs
|       `-- heads
|           `-- master
|-- objects
|   |-- 1e
|   |   `-- 3f5b88458d0a62d39f73d6b4819e326bbc873a
|   |-- 54
|   |   `-- cffd0089a9fb8f82cfe1b2833002dfa46209f4
|   |-- bd
|   |   `-- a1bce31a48536220681b01be0e82d90578377a
|   |-- c7
|   |   `-- 984ffca494ff9abf2703d8761f16aeb197422a
|   |-- d0
|   |   `-- d011ab8a3c0269ba664abca0b3b7224f6cbf6c
|   |-- df
|   |   `-- 2b8fc99e1c1d4dbc0a854d9f72157f1d6ea078
|   |-- e6
|   |   `-- 9de29bb2d1d6434b8b29ae775ad8c2e48c5391
|   |-- fc
|   |   `-- ce812c30f3d74f3db91bd8dad97cc8ad822f88
|   |-- info
|   `-- pack
`-- refs
    |-- heads
    |   `-- master
    `-- tags

20 directories, 26 files

关键要点:
1. index 就是我们的暂存区,add后的内容都是添加到这里的
2. HEAD 就是我们默认指向 master 分支的指针

bash 复制代码
[root@VM-4-4-centos gitcode]# cat .git/HEAD
ref: refs/heads/master

而默认的 master 分支,其实就是:

bash 复制代码
[root@VM-4-4-centos gitcode]# cat .git/refs/heads/master
54cffd0089a9fb8f82cfe1b2833002dfa46209f4

打印出来的 54cffd0089a9fb8f82cfe1b2833002dfa46209f4 就是保存的最新的commit id

3. objects为Git的对象仓库,里面包含了创建的各种版本库的对象及内容。当执行 git add 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,就位于".git/objects"目录下,让我们来看看这些对象有何用处

bash 复制代码
[root@VM-4-4-centos gitcode]# ls .git/objects
1e  54  bd  c7  d0  df  e6  fc  info  pack

查找 object 时要将 commit id 分成两部分,其中前2位时文件夹名称,后38位是文件名称。

找到这个文件之后,一般不能直接看到里面是什么,该类文件是经过sha(安全哈希算法)加密过的文件,好在我们可以使用 git cat-file 命令来查看版本库对象的内容:

bash 复制代码
[root@VM-4-4-centos gitcode]# git cat-file -p 54cffd0089a9fb8f82cfe1b2833002dfa46209f4
tree d0d011ab8a3c0269ba664abca0b3b7224f6cbf6c
parent 1e3f5b88458d0a62d39f73d6b4819e326bbc873a
author Lotso <3208137151@qq.com> 1761705560 +0800
committer Lotso <3208137151@qq.com> 1761705560 +0800

add 3 file3

我们可以发现这就是我们最近的一次提交。

其中,还有一行 tree d0d011ab8a3c0269ba664abca0b3b7224f6cbf6c,我们使用同样的方法,看看结果:

bash 复制代码
[root@VM-4-4-centos gitcode]# git cat-file -p d0d011ab8a3c0269ba664abca0b3b7224f6cbf6c
100644 blob bda1bce31a48536220681b01be0e82d90578377a	ReadMe
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391	file
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391	file1
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391	file2
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391	file3

再来看看ReadMe 对应的 bda1bce31a48536220681b01be0e82d90578377a

bash 复制代码
[root@VM-4-4-centos gitcode]# git cat-file -p bda1bce31a48536220681b01be0e82d90578377a
hello Lotso

总结⼀下,在本地的 git 仓库中,有几个文件或者目录很特殊

  • index: 暂存区, git add 后会更新该内容。
  • HEAD: 默认指向 master 分支的⼀个指针。
  • refs/heads/master: 文件里保存当前 master 分支的最新 commit id
  • objects: 包含了创建的各种版本库对象及内容,可以简单理解为放了 git 维护的所有修改。

后面在学习过程中,最好能将常见的 git 操作与 .git 目录当中的结构内容变化对应起来,这样有

利于我们理解git 细节流程。我们后面还会学习什么分支,标签什么的,就可以学习对应着研究了!


结尾:

html 复制代码
🍓 我是草莓熊 Lotso!若这篇技术干货帮你打通了学习中的卡点:
👀 【关注】跟我一起深耕技术领域,从基础到进阶,见证每一次成长
❤️ 【点赞】让优质内容被更多人看见,让知识传递更有力量
⭐ 【收藏】把核心知识点、实战技巧存好,需要时直接查、随时用
💬 【评论】分享你的经验或疑问(比如曾踩过的技术坑?),一起交流避坑
🗳️ 【投票】用你的选择助力社区内容方向,告诉大家哪个技术点最该重点拆解
技术之路难免有困惑,但同行的人会让前进更有方向~愿我们都能在自己专注的领域里,一步步靠近心中的技术目标!

结语:Git 本地操作的核心是 "工作区 - 暂存区 - 版本库" 的协同流程,从初始化仓库、配置身份到文件的添加与提交,每一步都在构建代码的 "可追溯性"。这些基础操作是版本控制能力的起点,让你告别手动管理版本的混乱。当你能熟练用git log查看提交历史,用git status掌控文件状态时,便已入门 Git 的世界。后续进阶的版本回退、撤销修改等操作,也将建立在这些基础认知之上,继续探索即可解锁 Git 更强大的 "纠错" 与 "协作" 能力。

✨把这些内容吃透超牛的!放松下吧✨ ʕ˘ᴥ˘ʔ づきらど

相关推荐
CS_浮鱼2 小时前
【C++进阶】异常
开发语言·c++
Ma0407132 小时前
【论文阅读17】-LLM-TSFD:一种基于大型语言模型的工业时间序列人机回路故障诊断方法
人工智能·语言模型·自然语言处理
百锦再2 小时前
大话Rust的前生今世
开发语言·后端·rust·go·内存·时间·抽象
QT 小鲜肉2 小时前
【C++基础与提高】第十一章:面向对象编程进阶——继承与多态
java·linux·开发语言·c++·笔记·qt
zskj_zhyl2 小时前
解构智慧养老:当科技成为银发族的“隐形守护者”
大数据·人工智能·科技·物联网
点云SLAM3 小时前
Exhaustive英文单词学习
人工智能·学习·exhaustive·英文单词学习·雅思备课·全面的
卡索(CASO)汽车调查3 小时前
卡索(CASO)汽车调查:数据智能时代,汽车产业竞争格局与战略升维路径探析
大数据·人工智能·汽车·神秘顾客·汽车密采·神秘人·汽车研究
笨鸟笃行3 小时前
人工智能备考——2.1.1-2.1.5总结
人工智能·学习