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 行。

相关推荐
量子炒饭大师3 小时前
一天一个计算机知识——【编程百度】向上取整
c语言·数据结构·c++·git·github
白里透白的小白3 小时前
复盘 Git+GitHub SSH 配置:从权限报错到免密推送的全流程解决方案
git·ssh·github·版本控制
长安城没有风4 小时前
在 IntelliJ IDEA 中高效使用 Git 的实用指南
java·git·intellij-idea
Zaki_gd5 小时前
【GIT】-- gitignore已经提交的文件
git
_OP_CHEN5 小时前
【Git原理与使用】(六)Git 企业级开发模型实战:从分支规范到 DevOps 全流程落地
大数据·linux·git·gitee·项目管理·devops·企业级组件
艾莉丝努力练剑6 小时前
【Linux进程(一)】深入理解计算机系统核心:从冯·诺依曼体系结构到操作系统(OS)
java·linux·运维·服务器·git·编辑器·操作系统核心
一勺-_-20 小时前
.git文件夹
大数据·git·elasticsearch
TT哇1 天前
【git】本地代码上传到gitee仓库(保姆级教程)idea和vscode等通用
git·gitee·intellij-idea
人在旅途我渐行渐远1 天前
idea 通过git撤销commit但未push的操作
java·git·intellij-idea