Git 超全零基础教程|三区原理、全套命令、分支协作、冲突解决、IDEA 集成(面试必备)

一、Git 概述

1. 什么是 Git

Git 是分布式版本控制系统,用于跟踪代码修改、保存版本快照、实现多人协同开发。

2. 集中式 vs 分布式

  • SVN(集中式):只有服务器存完整版本,断网无法提交
  • Git(分布式)每个人本地都有完整仓库,断网也可本地提交,安全性更高、速度更快

3. 三大核心操作

  • commit:本地保存版本
  • push:本地 → 远程
  • pull:远程 → 本地

4. 主流代码托管平台

  • Gitee(码云):国内速度快、稳定、免费仓库多(推荐)
  • GitHub:全球开源社区
  • GitLab:企业私有化部署

二、Git 环境配置

1. 首次安装必须配置(身份标识)

bash 复制代码
git config --global user.name "用户名"
git config --global user.email "邮箱"

# 查看配置
git config --global --list

作用:每次提交记录都会标记作者,不需要和 Gitee/GitHub 账号一致

2. 保存账号密码(免重复登录)

bash 复制代码
git config --global credential.helper store

三、Git 仓库两种创建方式

1. 本地初始化新项目

bash 复制代码
git init

生成隐藏 .git 文件夹,代表本地仓库创建成功

2. 克隆远程已有项目(工作最常用)

bash 复制代码
git clone 远程仓库地址

四、核心原理:Git 三区(必考)

三区结构

  1. 工作区:我们写代码的文件夹
  2. 暂存区(Stage):临时存放即将提交的修改
  3. 本地仓库.git 目录,永久保存所有版本快照

完整流转流程

工作区 → add → 暂存区 → commit → 本地仓库 → push → 远程仓库

文件四种状态

  • untracked:未跟踪(新增文件)
  • modified:已修改未暂存
  • staged:已暂存待提交
  • unmodified:已托管无修改

五、本地仓库全套命令

1. 查看状态

bash 复制代码
git status
  1. 添加到暂存区
bash 复制代码
git add 文件名
git add .      # 所有文件全部暂存
  1. 提交本地仓库
bash 复制代码
git commit -m "提交备注信息"
  1. 查看日志
bash 复制代码
git log
git log --oneline   # 简洁版日志
  1. 撤销操作(高频易错
bash 复制代码
# 暂存区撤销 → 回到工作区
git reset HEAD 文件名

# 版本回退(谨慎使用)
git reset --hard 版本号

六、远程仓库操作完整版

1. 查看远程仓库

bash 复制代码
git remote
git remote -v
  1. 关联远程仓库
bash 复制代码
git remote add origin 远程地址
  1. 推送代码
bash 复制代码
git push origin 分支名
  1. 拉取代码
bash 复制代码
git pull origin 分支名

5. 常见报错解决

报错:fatal: refusing to merge unrelated histories

两个仓库历史不一致,无法合并

bash 复制代码
git pull origin master --allow-unrelated-histories

七、分支管理(团队协作核心)

1. 分支概念

  • master/main:主分支,只放稳定上线代码
  • dev/feature:开发分支、功能分支

2. 全套分支命令

bash 复制代码
# 查看分支
git branch
git branch -a      # 查看所有本地+远程分支

# 创建分支
git branch 分支名

# 切换分支
git checkout 分支名

# 创建并切换(最常用)
git checkout -b 分支名

# 合并分支
# 1.先切到主分支
git checkout master
# 2.合并开发分支
git merge dev

# 删除分支
git branch -d 分支名

八、分支冲突详解(工作必会)

1. 冲突产生条件

两个分支修改了同一文件的同一行代码,Git 无法自动合并 → 冲突

2. 冲突解决步骤

  1. 打开冲突文件,删除冲突标记
  2. 保留最终正确代码
  3. git add .
  4. git commit -m "解决分支冲突"

原则:冲突必须人工解决,Git 不会自动覆盖代码


九、标签 Tag(版本发布)

标签用于标记项目版本(v1.0 /v2.0)

bash 复制代码
git tag                 # 查看标签
git tag v1.0            # 创建标签
git push origin v1.0   # 推送标签到远程

十、IDEA 集成 Git 完整流程

1. 配置 Git

设置 → Version Control → Git → 选择 git.exe 路径

2. 日常开发流程

  1. 修改代码
  2. Commit(提交本地仓库)
  3. Push(推送远程)
  4. 更新代码:Pull

3. IDEA 冲突可视化解决

  • Accept Yours:保留本地
  • Accept Theirs:保留远程
  • Merge:手动合并

十一、高频面试题总结

1. 三区执行流程?

工作区修改 → add 暂存 → commit 本地仓库 → push 远程仓库

2. clone 和 pull 区别?

  • clone:第一次下载整个项目
  • pull:项目已存在,更新最新代码

3. 什么时候产生冲突?

多人修改同一文件同一行代码,合并时冲突

4. merge 流程?

切换到主分支 → merge 开发分支

5. Git 分布式优势?

本地完整版本、断网可提交、安全性高、速度快

十二、Git 命令速查表(收藏版)

bash 复制代码
# 本地
git init
git add .
git commit -m ""
git log

# 远程
git clone
git remote add
git push
git pull

# 分支
git branch
git checkout
git checkout -b
git merge

# 撤销回退
git reset
相关推荐
ShineWinsu3 小时前
对于Git:基础操作的超详细保姆级解析
linux·c++·git·面试·备份·管理·版本控制器
00后程序员张4 小时前
Xcode vs KXApp,体积差几十G,选轻量方案还是完整工具链?
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
沉迷...4 小时前
Git skip-worktree 使用笔记(本地忽略配置文件)
javascript·git
数据狐(Datafox)5 小时前
1688商品列表API接口解析(附 JSON 样例)
java·开发语言·数据库·爬虫·json
解道Jdon7 小时前
JDK 27发布:紧凑对象头、G1默认、量子安全TLS
ide·windows·git·svn·eclipse·github·visual studio
m4Rk_7 小时前
【论文阅读】Agent 记忆机制(72):EMA——在写入前决定什么值得记住
论文阅读·人工智能·学习·开源·github
OpenTiny社区7 小时前
从开发到运行:OpenTiny NEXT 如何构建 Agent 时代的 Web 应用?
前端·github·ai编程
政安晨8 小时前
政安晨【超级AI智能体~技术简报】- Skills 元方法论霸榜 + Agent Harness 爆发 + 反直觉叙事的胜利
github·开源项目·ai agent·技术简报·政安晨
QUOR8 小时前
ZorvAI APK 插件框架 · 技术架构与功能介绍
github·apk·编程语言
孙琦Ray8 小时前
Homebrew/BrewUI:Homebrew 官方出的 macOS 图形客户端,把 brew 的装包、更新包变成点选
人工智能·开源·github