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 等技巧,多练几次就能熟练~

相关推荐
AI逐月3 小时前
Git 彻底清除历史记录
大数据·git·elasticsearch
有什么东东4 小时前
Windows安装git教程以及初步使用
git
不爱吃米饭_4 小时前
Gitea 轻量级的Git方案 - Gitlab的替代品
git·gitlab·gitea
CoderJia程序员甲7 小时前
GitHub 热榜项目 - 日榜(2025-12-15)
git·ai·开源·llm·github
大柏怎么被偷了7 小时前
【Git】远程操作
git
studytosky8 小时前
Linux 基础开发工具(3):Git 控制与 GDB 调试实用指南
linux·运维·服务器·网络·数据库·git
云闲不收10 小时前
AI编程系列——git-worktree并行开发
git·ai编程
秦时明月天明10 小时前
GitLab SSH Key 过期:git pull failed : remote your ssh key has expired
git·ssh·gitlab
桃花岛主7010 小时前
命令提交git到github上的步骤
git·github