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

🎬 博主简介:

文章目录
- 前言:
- 一. Git初识:为什么需要版本控制
- 二. Git 安装:跨平台部署步骤
- 2.1 Linux 系统(CentOS/Ubuntu)
- 2.2 Windows 系统
- 三. Git 本地仓库核心:概念与初始化
- 3.1 三大核心区域:工作区、暂存区、版本库
- 3.2 初始化本地仓库
- 四. Git 配置:设置用户身份
- 五. Git 本地核心操作:添加、提交与查看历史
- 5.1 添加文件到仓库(工作区→暂存区→版本库)
- 5.2 查看提交历史
- 5.3 查看 .git 文件
- 结尾:
前言:
在软件开发的日常中,“版本混乱”“修改无法追溯”“协作冲突” 是绕不开的痛点。
Git作为分布式版本控制的标杆工具,其本地操作是解决这些问题的第一步。它能让你清晰记录代码的每一次改动,像 “时光机” 一样回溯历史版本。本文将从版本控制的必要性讲起,带你完成 Git 的跨平台安装,理解工作区、暂存区、版本库的协同逻辑,并掌握文件添加、提交、历史查看等核心操作,为你筑牢 Git 使用的 “第一块基石”。
一. Git初识:为什么需要版本控制
在没有版本控制工具之前,我们管理文件版本的方式往往是“复制副本”–比如:

这种方式存在明显痛点:
- 版本混乱:随着版本的不断增多,无法清晰的知道每个版本修改的内容
- 协作困难:多人协作不方便,同时修改一个文件容易造成一些问题
Git的出现彻底解决了这些问题:它可以跟踪文本文件的每一次修改(如新增一行,删除一个单词),记录修改历史,支持随时回退到任意版本。可以控制电脑上所有格式的文件,对于我们来说,Git最重要的就是可以帮助我们管理软件开发项目中的源代码文件!
关键注意事项:
Git仅能跟踪文本文件的改动(如代码,txt文件),可以清晰的显示修改细节。对于图片,视频等二进制文件,虽然也能控制,但无法跟踪文件的变化,只能看到内存大小的变化。

二. Git 安装:跨平台部署步骤
Git 最初基于 Linux 开发,现已支持 Linux、Unix、Mac、Windows 四大主流平台,不同系统的安装流程简洁高效,具体步骤如下:
2.1 Linux 系统(CentOS/Ubuntu)
CentOS示例
# 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 示例
# 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 命令实现,具体步骤如下所示:
# 创建目录
[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 仓库的诸多细节,感兴趣的朋友可以看看:
# 查看目录结构
[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`-- tags9 directories, 13 files
四. Git 配置:设置用户身份
Git 每次提交都会记录提交者信息,因此初始化仓库后需优先配置用户名和邮箱,命令如下:
# 配置姓名和邮箱,查看配置(验证是否配置成功)
[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:新增单个文件并提交
- 在工作区新建
ReadMe文件:vim ReadMe,输入内容(如 “hello Lotso”); - 将文件添加到暂存区:
git add ReadMe; - 提交到版本库:
git commit -m "commit my first file",其中-m后的 “commit my first file” 是提交说明,必须填写,用于记录本次提交的目的,补充一下,这里也可以指定文件提交。
提交成功后,Git 会提示 “1 file changed, 2 insertions (+)”,表示 “1 个文件被修改,新增 2 行内容”,符合预期。
[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 file1 file changed, 1 insertion(+)create mode 100644 ReadMe
场景 2:批量添加多个文件
- 新建 3 个空文件:
touch file1 file2 file3; - 分多次添加到暂存区(或用
git add .添加当前目录所有文件): - 一次性提交:
git commit -m "add 3 files"。
[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 file33 files changed, 0 insertions(+), 0 deletions(-)create mode 100644 file1create mode 100644 file2create mode 100644 file3
5.2 查看提交历史
使用git log命令可查看所有提交记录,支持多种格式展示:
- 完整历史:
git log,显示每个版本的作者、提交时间、提交说明及commit id(版本号); - 简化展示:
git log --pretty=oneline,一行显示一个版本,包含commit id和提交说明。
[root@VM-4-4-centos gitcode]# git log
commit 54cffd0089a9fb8f82cfe1b2833002dfa46209f4
Author: Lotso <3208137151@qq.com>
Date: Wed Oct 29 10:39:20 2025 +0800add 3 file3commit 1e3f5b88458d0a62d39f73d6b4819e326bbc873a
Author: Lotso <3208137151@qq.com>
Date: Wed Oct 29 10:36:19 2025 +0800commit my first file
[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 的目录结构:
[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`-- tags20 directories, 26 files
关键要点:
1. index 就是我们的暂存区,add后的内容都是添加到这里的
2. HEAD 就是我们默认指向 master 分支的指针
[root@VM-4-4-centos gitcode]# cat .git/HEAD
ref: refs/heads/master
而默认的 master 分支,其实就是:
[root@VM-4-4-centos gitcode]# cat .git/refs/heads/master
54cffd0089a9fb8f82cfe1b2833002dfa46209f4
打印出来的 54cffd0089a9fb8f82cfe1b2833002dfa46209f4 就是保存的最新的commit id 。

3. objects为Git的对象仓库,里面包含了创建的各种版本库的对象及内容。当执行 git add 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,就位于".git/objects"目录下,让我们来看看这些对象有何用处
[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 命令来查看版本库对象的内容:
[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 +0800add 3 file3
我们可以发现这就是我们最近的一次提交。
其中,还有一行 tree d0d011ab8a3c0269ba664abca0b3b7224f6cbf6c,我们使用同样的方法,看看结果:
[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
[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 细节流程。我们后面还会学习什么分支,标签什么的,就可以学习对应着研究了!
结尾:
🍓 我是草莓熊 Lotso!若这篇技术干货帮你打通了学习中的卡点:
👀 【关注】跟我一起深耕技术领域,从基础到进阶,见证每一次成长
❤️ 【点赞】让优质内容被更多人看见,让知识传递更有力量
⭐ 【收藏】把核心知识点、实战技巧存好,需要时直接查、随时用
💬 【评论】分享你的经验或疑问(比如曾踩过的技术坑?),一起交流避坑
🗳️ 【投票】用你的选择助力社区内容方向,告诉大家哪个技术点最该重点拆解
技术之路难免有困惑,但同行的人会让前进更有方向~愿我们都能在自己专注的领域里,一步步靠近心中的技术目标!
结语:Git 本地操作的核心是 “工作区 - 暂存区 - 版本库” 的协同流程,从初始化仓库、配置身份到文件的添加与提交,每一步都在构建代码的 “可追溯性”。这些基础操作是版本控制能力的起点,让你告别手动管理版本的混乱。当你能熟练用git log查看提交历史,用git status掌控文件状态时,便已入门 Git 的世界。后续进阶的版本回退、撤销修改等操作,也将建立在这些基础认知之上,继续探索即可解锁 Git 更强大的 “纠错” 与 “协作” 能力。
✨把这些内容吃透超牛的!放松下吧✨ ʕ˘ᴥ˘ʔ づきらど

