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

第一章 Git 核心认知: 到底啥是 Git?

1. Git 是什么?一个能"时空穿梭"的代码备份神器

想象一下,你写文档时,系统能自动保存每一步修改,并且你可以随时回到任何一个过去的版本------这就是 Git 的核心作用。

官方定义 :Git 是一个免费、开源的分布式版本控制系统。它能高效地管理项目从诞生到发布的所有历史记录。

核心特点:

  • 速度快、体积小 :操作几乎在瞬间完成,只在项目中创建一个隐藏的.git文件夹来记录历史。
  • 强大的分支系统:可以轻松创建代码的"平行宇宙",在不同分支上开发不同功能,互不干扰。
  • 分布式:每个开发者电脑上都有一个完整的项目仓库(包含全部历史),不依赖中央服务器,更安全、更灵活。

💡 一句话理解:Git 就是你个人专属的、功能超级强大的"代码时光机 + 备份管理器"。

2. 为什么要用 Git?先了解版本控制工具的演变

在Git出现之前,主要有两种管理代码的方式:

类型 代表工具 工作原理 优点 缺点(Git解决的痛点)
集中式 SVN, CVS 所有代码和历史都存放在中央服务器上。大家从服务器下载最新代码,修改后再上传回去。 管理方便,权限控制集中。 单点故障:服务器一挂,所有人都无法工作。 依赖网络:无法离线提交。
分布式 Git, Mercurial 每个人电脑上都有完整的仓库克隆,包含所有代码和历史记录。 1. 离线工作:可以在本地任意提交。 2. 绝对安全:每个人的电脑都是完整备份。 3. 性能极快:绝大多数操作在本地完成。 概念相对复杂(但学会后真香!)

举个例子:

  • 用 SVN:改代码前必须连服务器拿最新版,服务器崩了只能干等着;
  • 用 Git:本地有完整代码库,改完先存本地,联网后再同步到远程,服务器崩了也能从其他同事电脑恢复代码。

1.3 代码托管中心:代码该存在哪?

代码托管中心就是 "远程代码仓库",本质是联网的服务器,分两种场景:

部署环境 常用工具 适用场景
局域网(公司内) GitLab 公司内部代码(私密)
互联网 GitHub(外网) 开源项目、个人学习
互联网 Gitee(码云) 国内访问快,适合国内项目

第二章 Git 环境准备:安装与配置(新手必做)

2.1 安装 Git

  • 下载地址:Git 官网(Windows 选 64-bit Git for Windows Setup);
  • 安装步骤:一路下一步(默认选项足够用,不用改);
  • 验证安装:右键桌面 → 选择「Git Bash Here」,弹出命令窗口就说明装好了。

2.2 核心配置:设置用户签名(必须做!)

Git 需要识别 "谁提交的代码 ",首次安装必须配置用户签名(和 GitHub/Gitee 账号无关):

bash 复制代码
# 设置用户名(比如你的昵称)
git config --global user.name "xiaobai"
# 设置邮箱(随便填,主要用来标识身份)
git config --global user.email "xiaobai@test.com"
  • --global:全局配置,所有本地仓库都生效;
  • 验证配置:输入git config --list,能看到刚才设置的 name 和 email 就对了。

第三章 Git 核心命令:本地仓库操作(高频)

理解下面这三个概念,就理解了Git的一半:

  • 工作区:你眼睛直接看到的、正在编辑的项目文件夹。

  • 暂存区 (Stage) :一个"准备台"。你把工作区的改动(git add)放到这里,准备打包成一个"包裹"。临时存放修改,相当于 "待提交缓冲区";

  • 本地仓库 (Repository) :最终的"档案库"。你把暂存区的"包裹"(git commit)正式存档到这里,生成一个永久的版本记录(隐藏的.git 文件夹里)。

    bash 复制代码
    工作区 -(git add)-> 暂存区 -(git commit)-> 本地仓库

3.1 核心命令速查表(带案例)

命令 作用 实战案例
git init 初始化本地库(生成.git 文件夹,不要手动去修改它) cd 你的代码文件夹 → git init
git status 查看文件状态 git status(看文件是未跟踪 / 已修改)
git add 文件名 把文件加到暂存区 git add hello.txt(单个文件) git add .(所有文件)
git commit -m "日志" 文件名 提交到本地库(生成版本) git commit -m "首次提交" hello.txt
git reflog 查看简洁历史记录(含版本号) git reflog(看版本号,比如 a1b2c3)
git log 查看详细历史记录 git log(含提交时间、作者、完整版本号)
git reset --hard 版本号 版本穿梭(回滚到指定版本) git reset --hard a1b2c3

3.2 文件状态说明(新手必懂)

执行git status后,文件主要有 2 种状态:

  1. Untracked (未跟踪):新文件,还没加过暂存区(红色提示);
    → 解决:git add 文件名 转为 "已暂存";
  2. Tracked (已跟踪):已经纳入版本控制,分 3 种子状态:
    • Unmodified(未修改):和本地库版本一致(无提示);
    • Modified (已修改):文件改了但没加暂存区(红色提示);
      → 解决:git add 文件名 转为 "已暂存";
    • Staged (已暂存):加了暂存区但没提交(绿色提示);
      → 解决:git commit 转为 "未修改"。

实战小案例:

bash 复制代码
# 1. 进入代码文件夹
cd D:/mycode
# 2. 初始化本地库
git init
# 3. 创建新文件
echo "hello git" > hello.txt
# 4. 查看状态(hello.txt是Untracked)
git status
# 5. 加到暂存区
git add hello.txt
# 6. 提交到本地库
git commit -m "新增hello.txt" hello.txt
# 7. 查看历史记录
git reflog

四、 新手必会的 Git 单机操作命令

4.1 分支是啥?

分支就是代码的 "独立副本":比如主分支(master/main)是稳定版本,你开发新功能时,创建一个专属分支(比如 feat-login),改代码不会影响主分支,开发完再合并回去

分支好处:

  • 多任务并行:分支的好处:你可以在 feature-a 分支开发功能A,在 hotfix-b 分支修复紧急bug,最后再选择性地合并到主分支,互不影响。;
  • 风险可控:分支开发失败直接删掉,不影响主分支。

4.2 分支核心命令

命令 作用 实战案例
git branch 分支名 创建分支 git branch feat-login
git branch -v 查看所有分支(* 表示当前分支) git branch -v
git checkout 分支名 切换分支 git checkout feat-login
git merge 分支名 把指定分支合并到当前分支 先切回 master:git checkout master → git merge feat-login

底层逻辑 :分支本质是 "指针",HEAD 指针指向当前所在分支,创建分支就是多一个指针,切换分支就是移动 HEAD。

4.3 分支冲突:解决代码打架问题

(1)冲突咋来的?

多分支合并时,同一个文件的同一行有不同修改(比如 master 分支改了 hello.txt 第 1 行,feat-login 也改了第 1 行),Git 没法自动选,就会触发冲突。

冲突表现:命令行提示MERGING,文件里出现特殊符号:

bash 复制代码
<<<<<<< HEAD (当前分支的代码)
hello master
======= (合并过来的分支代码)
hello login
>>>>>>> feat-login

(2)🔧 遇到合并冲突怎么办?(3 步走)

  1. 编辑文件:删除特殊符号,手动决定保留哪段代码(比如保留hello git);
  2. 加到暂存区:git add 冲突文件名;
  3. 提交(不带文件名!):git commit -m "解决分支冲突"。

第五章 Git 团队协作:远程仓库操作

一个人用叫备份,多人用才叫协作。我们需要一个远程仓库(如GitHub、Gitee)作为大家同步代码的中心枢纽。

5.1 远程仓库核心命令

命令 作用 实战案例(以 Gitee 为例)
git remote -v 查看远程仓库别名 / 地址 git remote -v
git remote add 别名 远程地址 给远程仓库起别名(简化命令) git remote add origin https://gitee.com/xiaobai/mycode.git
git push 别名 分支 推送本地分支到远程 git push -u origin master
git clone 远程地址 克隆远程仓库到本地(含.git) git clone https://gitee.com/xiaobai/mycode.git
git pull 别名 分支 拉取远程最新代码并合并 git pull origin master
bash 复制代码
# 1. 为远程仓库起一个别名(通常叫 origin)
git remote add origin https://gitee.com/yourname/yourrepo.git

# 2. 将本地仓库的"主线"(如main分支)推送到远程
git push -u origin main
# 第一次推送需要 -u 参数建立关联,以后直接 git push 即可

# 3. 将同事推送的新代码拉取到本地(并自动合并)
git pull origin main
# 相当于先 git fetch(抓取) 再 git merge(合并)

# 4. 克隆!(加入新项目的第一步)
git clone https://gitee.com/team/project.git
# 这个命令会做三件事:①下载代码 ②初始化本地仓库 ③自动连接远程仓库

5.2 关键说明:git pull = git fetch + git merge

  • git fetch:只拉远程最新代码到本地(不合并),能先看别人改了啥;
  • git merge:把拉下来的代码合并到当前分支;
  • git pull:一步到位(新手常用,注意先 commit 本地修改再 pull,避免冲突)。

5.3 协作流程(新手版)

  1. 克隆远程仓库到本地:git clone 远程地址;
  2. 创建本地分支开发:git branch feat-01 → git checkout feat-01;
  3. 开发完提交到本地:git add . → git commit -m "完成功能01";
  4. 推送分支到远程:git push origin feat-01;
  5. 拉取远程最新代码:git pull origin master(避免合并冲突);
  6. 合并分支到主分支(一般由技术经理操作)。

第六章 IDEA 集成 Git:可视化操作更省心

不用记命令,用 IDEA 图形界面就能操作,步骤如下:

  1. 配置 Git 路径:File → Settings → Git → 选择 Git 安装目录下的git.exe → 点击 Test,提示 OK 就对了;
  2. 获取 Git 仓库
    • 本地初始化:VCS → Import into Version Control → Create Git Repository → 选择代码文件夹;
    • 克隆远程仓库:File → New → Project from Version Control → 粘贴远程地址 → Clone;
  3. 日常操作
    • 提交:右键项目 → Git → Commit Directory(相当于git add + git commit);
    • 推送:Git → Push(相当于git push);
    • 拉取:Git → Pull(相当于git pull);
    • 分支操作:右下角分支名 → New Branch(创建)/Checkout(切换)/Merge(合并)。

第七章 Git 实用技巧:解决开发小痛点

7.1 git stash:暂存未完成的代码

场景:正在开发功能 A,突然要改 bug,不想提交半成品代码?用 stash 暂存!

用 git stash 把当前改动"藏起来",工作区就干净了。办完事回来,用 git stash pop 再"取出来"。

bash 复制代码
# 暂存当前修改(工作区变干净)
git stash
# 查看暂存列表
git stash list
# 恢复暂存的代码(并删除暂存记录)
git stash pop
# 恢复暂存的代码(保留暂存记录)
git stash apply
# 删除指定暂存记录
git stash drop stash@{0}
# 清空所有暂存
git stash clear

7.2 git rebase:让提交记录更整洁

rebase(变基)作用:把本地未推送的提交,"接" 到远程最新代码后面,避免合并出多余的提交记录,让历史记录呈直线(对比 merge 的分叉记录更清爽)。

bash 复制代码
# 拉取远程最新代码并变基
git pull --rebase origin master

⚠️ 注意:不要对已经推送到远程的提交用 rebase(会打乱团队提交记录)!

7.3 .gitignore:忽略不需要版本控制的文件

有些文件(比如编译后的 target、IDE 配置文件)不需要提交到仓库,新建.gitignore文件,写入要忽略的内容即可:

bash 复制代码
# Maven编译目录
target/
!.mvn/wrapper/maven-wrapper.jar

# IDEA配置文件
.idea/
*.iml
*.ipr
*.iws

# VS Code配置
.vscode/

# 日志文件
logs/

# 临时文件
*.tmp

注意 :.gitignore 要放在仓库根目录,且必须在文件未被跟踪前创建(如果已经 add 过,先git rm --cached 文件名再配置)。

第八章 Git 规范与避坑:新手少踩雷

8.1 分支命名规范(按团队约定来)

推荐格式:类型-需求号/日期-开发者,比如:

  • feat-0131-登录功能-jie(新功能);
  • fix-3387-重复请求-jie(修 bug);
  • doc-接口文档-jie(改文档)。

常见分支类型:

类型 说明
feat 新功能开发
fix 修复 bug
doc 文档修改
refactor 代码重构(不新增功能 / 修 bug)
test 测试相关
chore 构建 / 工具配置修改

8.2 新手避坑指南

1. 不要直接在 master 分支开发:

公司一般有固定分支流程:dev(开发)→ test(测试)→ uat(预发)→ release(生产),开发时拉 dev 分支,测试提测拉 test,上线前合并到 release/uat;
2. 拉取代码优先选 release/uat:

dev/test 分支可能有同事未验证的代码,基于这些分支开发,会把不稳定代码带到生产;
3. 提交前先 pull:

避免本地代码和远程冲突,提交前先git pull拉最新代码;
4. 写清晰的提交日志:

比如feat: 需求0131-新增账期选择功能,别写 "改了点东西" 这种无效日志。

第九章 Git 命令行小技巧:提高效率

9.1 Linux 基础命令(Git Bash 常用)

命令 作用
i 进入编辑模式(修改文件时)
esc 退出编辑模式
yy 复制当前行
pp 粘贴复制的内容
:wq 保存并退出编辑
ll 查看当前文件夹所有文件
cat 文件名 查看文件内容
tail -n 1 文件名 查看文件最后 1 行(n = 数字)

9.2 Git Bash 复制粘贴

  • 复制:选中内容 → 按Ctrl + Ins;
  • 粘贴:按Shift + Ins(别用 Ctrl+C/V,没用!)。

💎 总结:Git 核心流程

  • 本地:git init → 写代码 → git add → git commit;
  • 远程:git remote add → git push(推代码)/git pull(拉代码);
  • 分支:git branch → git checkout → 开发 → git merge;
  • 避坑:先 pull 再提交,不用 master 开发,冲突手动解决,用完 stash 记得恢复。

Git 的核心是 "版本控制" 和 "协作",新手先掌握本地操作 + 分支 + 远程推送 / 拉取,再学 stash/rebase 等技巧,多练几次就能熟练~

相关推荐
m0_5791466530 分钟前
Git 重置模式详解:四种重置方式的原理与应用场景
git
恋喵大鲤鱼34 分钟前
git grep
git·git grep
霸王龙的小胳膊1 小时前
Git基础知识
git
恋喵大鲤鱼2 小时前
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
大志哥12317 小时前
idea+git插件+云备份实现项目新分支新建维护
git
恋喵大鲤鱼17 小时前
git merge
git·git merge