Git入门指南:从零掌握版本控制

Git学习------初学Git

一、Git是什么

Git 是目前全球最流行的分布式版本控制系统,核心作用是管理文件(尤其是代码)的版本变更,支持多人协作开发、版本回溯、分支管理等功能,是软件开发领域的必备工具之一。
Git的核心特点与用途:

1、分布式架构:

每个开发者本地都有完整的仓库副本,无需依赖中央服务器即可独立提交、分支操作,协作更灵活。

2、版本管理:

记录文件的每一次变更(提交),可通过提交哈希快速回溯到任意历史版本,便于定位问题、恢复代码。

3、分支与合并:

支持创建多个分支(如功能分支、修复分支),不同分支的代码可独立开发,完成后再合并到主分支,避免代码冲突。

4、协作支持:

结合远程仓库(如 GitHub、GitLab),可实现多人代码同步、代码审查(PR/MR)等协作流程。
与传统版本控制的区别:

传统集中式版本控制(如 SVN)依赖中央服务器,本地仅存当前版本;而 Git 是分布式,本地包含完整历史,断网也能操作,且性能(如提交、分支)更高效。

二、为什么要用到Git

1、版本管理:避免 "代码失控":

记录每一次变更:每一次修改都会被标记为一个 "版本",可随时回溯到任意历史状态(比如代码改崩了,能快速恢复到之前的可用版本)。

清晰追踪变更:通过提交说明和历史记录,能明确知道 "谁在什么时候改了什么",便于定位问题、复盘迭代。

2、协作开发:多人并行工作不冲突:

分支隔离:多人可在不同分支上开发功能 / 修复 bug,互不干扰;完成后再合并到主分支,避免代码覆盖。

远程同步:结合 GitHub/GitLab 等平台,团队成员能同步最新代码、审查彼此的修改(通过 PR/MR),保证代码质量。

3、效率提升:简化开发流程:

分布式架构:本地即可完成提交、分支等操作,无需依赖网络;断网时也能正常开发,联网后再同步远程。

轻量高效:Git 的操作速度快(提交、分支等几乎是瞬间完成),且仓库体积小,不会给项目增加过多冗余。

4、安全保障:降低代码丢失风险:

本地 + 远程备份:代码同时存储在本地和远程仓库,即使本地文件损坏,也能从远程恢复完整版本。

三、⼯作区、暂存区、版本库

可以把这三个区域理解为 Git 管理文件的 "三个阶段",文件会在这三个区域间流转,最终完成版本记录。

  1. 工作区(Working Directory)
    通俗理解:你电脑上能看到的、正在编辑代码的文件夹(就是项目目录本身)。
    核心特点:Git 不会主动跟踪这里的文件变更,只有通过 git add 操作,才能把变更提交到下一个阶段。
    示例:你在项目里新建 file.txt、修改代码,这些操作都发生在工作区。
  2. 暂存区(Staging Area/Index)
    通俗理解:工作区和版本库之间的 "临时缓冲区",相当于 "待提交清单"。
    核心特点:用来存放你想要提交的文件变更,可选择性添加(比如只提交部分修改的文件),是 Git 特有的设计。
    对应文件:仓库 .git 目录下的 index 文件(无需手动操作)。
  3. 版本库(Repository)
    通俗理解:Git 的 "数据库",存储所有提交记录、分支、版本信息的地方,就是 .git 隐藏文件夹。
    核心特点:只有通过 git commit 操作,才能把暂存区的内容正式存入版本库,形成可追溯的版本记录。
    核心组成:包含 objects(存储版本对象)、refs(分支 / 标签引用)、HEAD(当前分支指针)等关键文件。

四、Git 常用核心命令

1、仓库的初始化

git init 是初始化 Git 仓库的基础命令,执行后会在当前目录下创建一个隐藏的 .git 文件夹(Git 仓库的核心目录),这个目录包含了 Git 跟踪版本、管理分支、存储提交记录所需的所有数据和配置,从此该目录就成为一个可被 Git 管理的仓库。

bash 复制代码
# 示例1:初始化当前目录为Git仓库
cd /Users/yourname/projects/my-project  # 进入目标目录
git init                                # 执行初始化
# 执行成功会提示:Initialized empty Git repository in /Users/yourname/projects/my-project/.git/

# 示例2:初始化指定目录为Git仓库
git init new-project                    # 创建new-project文件夹并初始化
cd new-project                          # 进入新建的仓库目录


关键点:

①、执行 git init 后,目录中的文件默认处于 "未跟踪" 状态,需要通过 git add 暂存、git commit 提交才能被 Git 记录版本。

②、.git 文件夹是 Git 仓库的核心,切勿手动修改或删除,否则会导致仓库损坏、版本记录丢失。

③、一个目录只需执行一次 git init,重复执行不会报错,但也不会产生新的效果。
.git目录是 Git 管理版本的 "大脑",所有版本记录、分支信息、配置都存储于此。它的存在使普通目录成为 Git 仓库,不可手动修改 / 删除,否则会导致仓库损坏、版本数据丢失。

2、配置Git

配置用户信息:

bash 复制代码
# 全局配置(推荐,一次配置所有仓库生效)
git config --global user.name "你的用户名"  # 如 "ZhangSan"
git config --global user.email "你的邮箱"   # 如 "zhangsan@example.com"

# 本地配置(仅当前仓库生效,优先级高于全局)
# 进入目标仓库目录后执行
git config user.name "你的用户名"
git config user.email "你的邮箱"

Git 配置删除命令:

删除 Git 配置项的核心命令是 git config --unset,需结合作用域(全局 / 本地)来指定要删除的配置,具体用法如下:

bash 复制代码
# 通用格式
git config [--global/--local] --unset <配置项名称>

3、git add 和git commit

git add 和 git commit 是 Git 版本控制中最核心的两个命令,前者负责将文件暂存(加入暂存区),后者负责将暂存区的文件提交到本地版本库,形成可追溯的版本记录。
git add:工作区 → 暂存区的 "中转操作"

核心作用:

将工作区中已修改 / 新建的文件(或文件的部分变更)添加到暂存区,是提交版本前的 "准备步骤"。
注意: 未执行 git add 的变更,无法通过 git commit 提交。

eg:

接下来我们将刚刚创建的文件提交至暂存区

bash 复制代码
git add test1.txt 

通过 git status 命令可以查看当前暂存区的状态


git commit

git commit 是 Git 中将暂存区的变更提交到本地仓库的核心命令,每一次 commit 都会生成一个唯一的提交哈希,记录代码的一次完整变更,是版本追溯的基础。

我们将刚刚在暂存区的test1.txt 文件进行提交:

4、git log

git log是Git中最常用的查看提交历史的命令,能展示仓库中所有提交的详细信息(提交哈希、作者、时间、提交说明等),是追溯代码变更、定位问题的核心工具。

5、git diff

git diff 是 Git 中查看代码变更细节的核心命令,能对比「工作区、暂存区、本地仓库」之间的文件差异,是开发中核对修改、排查问题的关键工具。常用的有git diff ,可以对比「工作区 vs 暂存区」。

操作流程与含义

首次执行git diff Readme

无输出:说明执行时Readme文件的工作区与暂存区无差异(文件未修改)。

执行vim Readme

打开Readme文件进行编辑(通过 vim 修改了文件内容)。

再次执行git diff Readme

输出差异内容:显示Readme文件的修改细节:

新增了 "hello everyone" 这一行;

保留了原有的 "hello world" "hello git"行。
关键信息解读

文件状态:此时Readme的修改仅在工作区(未执行git add),所以git diff能直接显示差异。

diff 标识含义:

--- a/Readme:代表修改前的文件(暂存区版本);

+++ b/Readme:代表修改后的文件(工作区版本);

-开头行:被删除的内容;+开头行:新增的内容;

@@ -1,2 +1,3 @@:表示修改前是第 1-2 行,修改后是第 1-3 行。

相关推荐
m0_5791466511 分钟前
Git 重置模式详解:四种重置方式的原理与应用场景
git
恋喵大鲤鱼14 分钟前
git grep
git·git grep
霸王龙的小胳膊33 分钟前
Git基础知识
git
恋喵大鲤鱼1 小时前
git fetch
git·git fetch
Java知识技术分享2 小时前
安装sourcetree
java·git·源代码管理
恋喵大鲤鱼2 小时前
git revert
git·git revert
爱和冰阔落2 小时前
【Codex项目实战】从模糊需求到可验证交付:Plan、测试、Review与Worktree完整流程
人工智能·git·codex
恋喵大鲤鱼12 小时前
git rebase
git·git rebase
大志哥12316 小时前
idea+git插件+云备份实现项目新分支新建维护
git
恋喵大鲤鱼17 小时前
git merge
git·git merge