Git 入门指南:从 0 到 1 掌握版本控制

🔥个人主页:Cx330🌸

❄️个人专栏:《C语言》《LeetCode刷题集》《数据结构-初阶》《C++知识分享》

《优选算法指南-必刷经典100题》《Linux操作系统》:从入门到入魔

🌟心向往之行必能至


🎥Cx330🌸的简介:


目录

前言:

[一、先搞懂:Git 是什么?为什么要用?​](#一、先搞懂:Git 是什么?为什么要用?)

[1. Git 的本质​](#1. Git 的本质)

[2. 为什么非要学 Git?​](#2. 为什么非要学 Git?)

[二、第一步:安装 Git(3 分钟搞定)​](#二、第一步:安装 Git(3 分钟搞定))

[1. Windows 系统​](#1. Windows 系统)

2.Linux系统(CentOS/Ubuntu)

[2.1 CentOS版本](#2.1 CentOS版本)

[2.2 Ubuntu版本](#2.2 Ubuntu版本)

[三、Git 本地仓库初始化与配置](#三、Git 本地仓库初始化与配置)

[3.1 初始化](#3.1 初始化)

[3.2 单仓库配置name与email](#3.2 单仓库配置name与email)

[3.3 所有仓库配置name与email](#3.3 所有仓库配置name与email)

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

[五、Git 实战:10 分钟完成"本地→远程" 全流程](#五、Git 实战:10 分钟完成“本地→远程” 全流程)

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

[5.2 查看历史提交文件信息](#5.2 查看历史提交文件信息)

[5.3 查看.git文件](#5.3 查看.git文件)

结尾​


前言:

你是否有过这样的经历?改了半天的论文,不小心删掉关键段落却找不回;和同事一起做方案,每人发一个 "最终版",最后分不清哪个是最新的;电脑重装系统,没备份的项目文件直接消失...... 这些看似小事的 "文件灾难",其实都源于缺少一套科学的版本管理方法。​

而 Git,就是解决这些问题的 "神器"。但很多新手一听到 "命令行""仓库""分支" 就打退堂鼓,觉得它复杂难学。其实不然 ------Git 的核心逻辑很简单,只要掌握 "记录修改、同步内容" 的核心流程,就能应对 80% 的日常需求。​

这篇指南专为零基础者设计,没有复杂的理论堆砌,只有一步步的实操说明:从 3 分钟安装 Git,到搞懂 "工作区 / 暂存区 / 仓库" 的关系,再到完成 "本地项目推送到远程" 的全流程,甚至帮你避开新手最容易踩的坑。跟着做,你会发现:原来 Git 入门,真的没那么难。​

如果你是程序员、设计师,或是经常需要修改文件的人,一定遇到过这些问题:​

  1. "昨天改的代码不小心删了,怎么恢复?"
  2. "和同事一起改同一个文件,改着改着就乱了"
  3. "想回溯到上周的文档版本,却找不到备份"

这时候,Git 就能帮你解决所有 "版本管理" 的烦恼。今天就带大家从 0 开始,轻松入门 Git


一、先搞懂:Git 是什么?为什么要用?​

1. Git 的本质​

Git 是一款分布式版本控制系统,简单说就是:​

  • 记录文件的每一次修改(像 "时光机",能随时回溯历史版本)
  • 支持多人协作(每个人的修改都能有序合并,不冲突)
  • 本地就能操作不用依赖网络,只有需要同步时才连远程仓库)

2. 为什么非要学 Git?​

  • 避免 "文件灾难":误删、改乱文件时,能一键恢复到之前的版本
  • 多人协作必备:团队开发项目时,不用再发 "最终版_最终最终版_v3.docx" 这种混乱文件
  • 职场刚需:几乎所有互联网公司都用 Git 管理代码,会 Git 是基础技能

注意:

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


二、第一步:安装 Git(3 分钟搞定)​

Git 支持WindowsLinux,按系统选对应的方法:​

1. Windows 系统​

  1. 打开Git 官网下载页,自动下载适配版本
  1. 双击安装包,一路 "Next"(默认选项足够用,不用改)
  1. 安装完成后,右键点击桌面,出现 "Git Bash Here" 就说明成功了(点击打开,这是 Git 的命令行工具)

2.Linux系统(CentOS/Ubuntu)

2.1 CentOS版本
bash 复制代码
# 1. 安装 Git,普通账户需要sudo提权,root不用
[root@VM-4-4-centos ~]# (sudo) yum -y install git

# 2. 验证安装是否成功以及查看Git版本(显示版本号即成功)
[root@VM-4-4-centos ~]# git --version
2.2 Ubuntu版本
bash 复制代码
# 1. 安装 Git(系统会提示安装命令,直接执行即可)
sudo apt-get install git -y

# 2. 验证安装
git --version

三、Git 本地仓库初始化与配置

3.1 初始化

创建仓库(目录):

mkdir gitcode

初始化仓库

git init

查看 .git

注意事项:

.git文件里面的内容不能删改!

3.2 单仓库配置name与email

配置name:

git config user.name "姓名"

配置email:

git config user.email "邮箱(qq.com)"

查看配置:

git config -l

重置name与email:

git config --unset user.name/email

3.3 所有仓库配置name与email

配置name:

git config --global user.name "姓名"

配置email:

git config --global user.email "邮箱(qq.com)"

查看配置:

git config -l

发现:user.name和user.email跑到了前面,就说明配置成功了

重置name与email:

git config --global --unset user.name/email

说明:

一台服务器上可以创建多个本地仓库,加--global选项,目的是在当前机器的所有git仓库生效


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

新手学 Git 最容易懵的是 "文件存在哪里",记住这 3 个区域,逻辑就通了:

  • 左侧为工作区,右侧为版本库。Git 的版本库中存了很多东西,其中最重要的就是暂存区。
  • 在创建 Git 版本库时,Git会为我们自动创建一个唯一的 master 分支,以及指向 master 的一个指针叫 HEAD。
  • 当对工作区新增或修改或删除文件执行git add命令时,暂存区目录树的文件索引会被更新(如图所示).
  • 当执行提交操作 git commit 时,master分支会做相应的更新,可以简单理解为暂存区的目录树会被真正写到版本库中

简单流程: 在工作区改文件 → 把修改加到暂存区 → 提交到本地仓库 → 推送到远程仓库

|---------|-------------------------------------|------------|
| 区域 | 作用 | 通俗比喻 |
| 工作区 | 你正在编辑的文件所在的文件夹(比如桌面的 "我的项目" 文件夹) | 你的 "草稿纸" |
| 暂存区 | 临时存放要提交的修改(选一部分文件先 "暂存",不是所有修改都要提交) | 待提交的 "购物车" |
| 版本库 | 存放在你电脑里的完整版本历史(.git文件夹,看不见但很重要) | 你家里的 "档案柜" |


五、Git 实战:10 分钟完成"本地→远程" 全流程

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

文件会先在 "暂存区" 暂存,支持单个文件、多个文件或目录的批量操作,具体示例如下:
场景1:单个文件添加

  1. 首先在该路径下创建一个文件例如:touch ReadMe
  2. 在文件里面添加内容vim ReadMe例如:"Hello git"
  3. 将文件add到暂存区:git add ReadMe
  4. 将文件提交到版本库:git commit -m "add my first file"(注:引号里面的内容不可以随意乱填,一定要描述相关内容)
bash 复制代码
yhr@VM-24-15-ubuntu:~/gitcode$ cat ReadMe
Hello git
yhr@VM-24-15-ubuntu:~/gitcode$ git add ReadMe
yhr@VM-24-15-ubuntu:~/gitcode$ git commit -m "add first file"
[master (root-commit) c991930] add first file
 1 file changed, 1 insertion(+)
 create mode 100644 ReadMe

提交成功以后会显示:**1 file changed, 1 insertion(+)**表示一个文件被改变(修改),新增加了1行内容

场景2:批量提交多个文件

  1. 再在当前路径下新建 3 个文件:touch file1 file2 file3
  2. 分多次添加到暂存区:git add file1 file2 file3(或用**git add .**添加当前目录所有文件)
  3. 一次性提交到版本库:git commit -m "add 3 file"
bash 复制代码
yhr@VM-24-15-ubuntu:~/gitcode$ touch file1 file2 file3
yhr@VM-24-15-ubuntu:~/gitcode$ la
file1  file2  file3  .git  ReadMe
yhr@VM-24-15-ubuntu:~/gitcode$ git add file1
yhr@VM-24-15-ubuntu:~/gitcode$ git add file2 file3
yhr@VM-24-15-ubuntu:~/gitcode$ git commit -m "add 3 file"
[master 746b339] add 3 file
 3 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 file1
 create mode 100644 file2
 create mode 100644 file3

5.2 查看历史提交文件信息

查看所有提交记录命令: git log

  1. 查看完整的历史文件信息:git log显示作者,提交时间,提交说明,和commit id(每个commit都有对应的版本号)
  2. 简介版表示:git log --pretty=oneline一行是一个版本以及对应的commit id

5.3 查看.git文件

我们tree .git/ 看一下git的结构

bash 复制代码
yhr@VM-24-15-ubuntu:~/gitcode$ tree .git/
.git/
├── branches
├── COMMIT_EDITMSG
├── config
├── description
├── HEAD
├── hooks
│   ├── applypatch-msg.sample
│   ├── commit-msg.sample
|   ├── fsmonitor-watchman.sample
│   ├── post-update.sample
│   ├── pre-applypatch.sample
│   ├── pre-commit.sample
│   ├── pre-merge-commit.sample
│   ├── prepare-commit-msg.sample
│   ├── pre-push.sample
│   ├── pre-rebase.sample
│   ├── pre-receive.sample
│   ├── push-to-checkout.sample
│   └── update.sample
├── index
├── info
│   └── exclude
├── logs
│   ├── HEAD
│   └── refs
│       └── heads
│           └── master
├── objects
│   ├── 0d
│   │   └── ec2239efc0bbfabe4078f5357705ca93b5475e
│   ├── 74
│   │   └── 6b339d3058dcf6ea9889b3893c12f9be947a4c
│   ├── c9
│   │   └── 919304ee67dc00138cce7659abc2e2d2ea051c
│   ├── df
│   │   └── 0c1275ea442bead2585c5e398d2dda0b3ec069
│   ├── e1
│   │   └── b507e8332c7e00e1a5dfef2d713279fb380c07
│   ├── e6
│   │   └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391
│   ├── info
│   └── pack
└── refs
    ├── heads
    │   └── master
    └── tags

18 directories, 28 files

注意:

  1. 我们观察可以发现有 index ,我们 add 后的文件都在这个index暂存区存放
  2. HEAD 就是我们默认指向 master 分支的指针
bash 复制代码
yhr@VM-24-15-ubuntu:~/gitcode$ cat .git/HEAD
ref: refs/heads/master

我们来看一下master分支:

bash 复制代码
yhr@VM-24-15-ubuntu:~/gitcode$ cat .git/refs/heads/master
746b339d3058dcf6ea9889b3893c12f9be947a4c

这一串数字是什么呢?

其实就是我们刚刚最近一次commit的id

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

查看版本库对象的内容:git cat-file -p (commit id)

bash 复制代码
yhr@VM-24-15-ubuntu:~/gitcode$ git cat-file -p 746b339d3058dcf6ea9889b3893c12f9be947a4c
tree df0c1275ea442bead2585c5e398d2dda0b3ec069
parent c9919304ee67dc00138cce7659abc2e2d2ea051c
author yhr <xxxxxxxxx@qq.com> 1764737022 +0800
committer yhr <xxxxxxxxx@qq.com> 1764737022 +0800

add 3 file

可以看到这是我们最近一次的提交

我们可以发现tree后面还跟一堆数字,这是什么呢?我们再来打印出来看一下:

bash 复制代码
yhr@VM-24-15-ubuntu:~/gitcode$ git cat-file -p df0c1275ea442bead2585c5e398d2dda0b3ec069
100644 blob 0dec2239efc0bbfabe4078f5357705ca93b5475e	ReadMe
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391	file1
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391	file2
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391	file3

我们在add ReadMe文件之前在里面写了一段代码,我们在来打印一下0dec2239efc0bbfabe4078f5357705ca93b5475e

bash 复制代码
yhr@VM-24-15-ubuntu:~/gitcode$ git cat-file -p 0dec2239efc0bbfabe4078f5357705ca93b5475e
Hello git

我们可以发现,我们写的代码打印出来了


结尾​

看到这里,你已经掌握了 Git 的核心入门知识 ------ 从安装到实战,从避坑到基本协作,这些内容足以帮你告别 "文件混乱" 的烦恼。​

可能有人会说 "记不住命令",但其实不用死记:不确定时回头看 "实战流程",多试两次 "新建文件→提交→推远程",命令就会慢慢变成肌肉记忆。就像学开车,一开始记不清挡位,但开多了自然就熟练了。​

现在,不妨打开你的电脑,跟着 "10 分钟实战" 步骤走一遍 ------ 当你 Gitee 上看到自己推送的文件时,会发现:Git 入门,真的只是 "动手做一次" 的事儿。如果后续遇到新问题,也可以回头翻看这篇指南,或者尝试进阶内容。版本管理的大门已经为你打开,接下来就交给实践吧!

相关推荐
老条码新物联数字派34 分钟前
【学习Linux】 乌班图(UBuntu)和Linux
linux·运维·ubuntu
高旭的旭43 分钟前
解决 Ubuntu使用 ADB 设备权限问题:no permissions (missing udev rules?)
linux·ubuntu·adb
꧁坚持很酷꧂44 分钟前
Ubuntu系统下通过第三方库QtXlsx输出Excel(图文详解)
ubuntu·excel
爱凤的小光1 小时前
Git自我学习笔记
笔记·git·学习
艾莉丝努力练剑1 小时前
【Linux基础开发工具 (五)】详解自动化构建:make / Makefile
linux·运维·服务器·c++·centos·自动化
江米小枣tonylua1 小时前
从神州22极限救援,看懂Git高级玩法
git
蝶恋舞者10 小时前
gitee 的使用
gitee
Violet_YSWY11 小时前
git stash和backup一样吗
git
灵魂学者11 小时前
Vue3.x —— 父子通信
前端·javascript·vue.js·github