Git全套核心知识点:从入门到精通 📅 2026/7/19 5:08:54 ✨简介本文整理Git全套核心知识点包含基础概念、高频命令、分支操作、版本回滚、冲突解决、多仓库同步、企业级开发规范及报错排查适合零基础入门、日常开发查阅、面试复习全程干货无废话。参考教程菜鸟Git教程 目录1. 基础概念2. 常用核心命令3. 远程仓库鉴权与双仓库同步4. 企业级多环境部署架构5. 规范开发流程6. 命令速查表7. 高频易错点总结8. 常见报错排查9. 实战需求场景1. 基础概念1.1 Git核心作用Git是开源分布式版本控制系统核心用于代码版本管理、多人团队协作、记录代码修改轨迹、回溯版本适配大小各类项目区别于SVN等集中式版本工具无需服务端支撑灵活性更高。1.2 Git与SVN核心区别分布式vs集中式Git是分布式本地拥有完整版本库SVN是集中式依赖中央服务端仓库存储方式Git按元数据存储SVN按原始文件存储分支机制Git分支高效独立SVN分支本质是目录拷贝开销大版本号SVN有全局统一版本号Git无全局版本号完整性Git基于SHA-1哈希算法存储数据完整性、容错性远优于SVN1.3 三大工作区域工作区本地项目文件夹日常编写、修改代码的目录暂存区stage临时存放待提交文件存储在.git目录的index文件中用于批量提交代码版本库存储项目所有版本历史快照分为本地仓库项目隐藏的.git目录存储本地所有提交记录远程仓库Gitee/GitHub等云端仓库用于团队共享、代码备份1.4 核心工作流程工作区 →git add→ 暂存区 →git commit→ 本地仓库 →git push→ 远程仓库1.5 区域交互核心命令工作区 → 暂存区git add 文件名/.暂存区 → 本地版本库git commit -m 提交备注本地版本库 → 远程仓库git push origin 分支名远程仓库 → 本地版本库git pull origin 分支名1.6 HEAD指针与重置参数1.6.1 HEAD指针HEAD是Git特殊指针代表当前代码所处位置指向当前分支最新提交。结构关系HEAD → main/master分支指针 → 最新commit提交常用简写HEAD当前分支最新提交HEAD~1 / HEAD^上1次提交HEAD~2上2次提交1.6.2 reset --hard 参数--hard是git reset最彻底的硬重置模式会清空工作区、暂存区所有改动彻底回退到指定版本操作不可逆慎用补充git reflog可查看所有HEAD历史记录找回 reset 误操作丢失的提交。2. 常用核心命令2.1 创建/克隆仓库本地新建仓库# 1. 创建文件夹并进入 mkdir test-git cd test-git # 2. 初始化git仓库生成隐藏.git文件夹 git init克隆远程已有仓库git clone 仓库地址 # 示例 git clone https://gitee.com/xxx/demo.git2.2 保存暂存记录临时保存半成品# 快速保存所有本地改动工作区已add的暂存 git stash # 带备注方便区分多条stash推荐 git stash save 开发登录页半成品 # 查看所有暂存记录列表 git stash list2.3 查看文件状态与差异查看文件状态命令git status状态解读On branch main当前所在本地分支up to date本地与远程代码完全同步ahead of xx commits本地有提交未推送到远程behind xx commits远程有更新本地未拉取查看文件差异# 对比【工作区】与【暂存区】单个文件的未提交修改 git diff file # 对比暂存区 ↔ 本地仓库最新commit(HEAD) git diff --cached file git diff --staged file # 工作区直接对比本地仓库最新版本 HEAD git diff HEAD file # 对比两个提交版本的同一文件 git diff commitID1 commitID2 文件名 # 精简输出只看改动文件统计不展示代码 git diff --stat git diff --stat file ### diff 输出标识解析 --- a/file.txt # 修改前旧文件 b/file.txt # 修改后新文件 -1,2 1,3 # -旧文件行范围新文件行范围 -原有代码行 # - 代表删除/旧内容 新增代码行 # 代表新增/修改内容 无符号普通行 # 未改动的上下文代码 ###2.4 拉取远程代码# 格式git pull 远程别名 分支名 git pull origin master # 拉取Gitee master分支最新代码 git pull github master # 拉取GitHub master分支最新代码 # 简写本地分支已关联对应远程分支时可以省略远程与分支名 # git pull git fetch拉取远程更新 git merge自动合并远程分支到本地当前分支 git pull2.5 代码提交三部曲# 1. 将文件加入暂存区 git add . # 当前目录所有修改文件 git add 文件名 # 单个文件 # 2. 提交到本地仓库备注本次修改内容 git commit -m 提交说明完成登录页面 # 3. 推送到远程仓库 # 简写推送当前本地分支到绑定好的远程上游分支 git push # 第一次推送时建立关联 git push -u origin main # 完整写法强制指定推送到 origin 的对应分支不依赖上游绑定 git push origin 分支名2.6 远程仓库管理# 查看所有远程 git remote -v # 添加远程仓库origin是默认远程别名 git remote add origin https://gitee.com/xxx/demo.git # 添加新远程 git remote add 别名 仓库地址 git remote add github gitxxx.git # 修改已有远程地址 git remote set-url github 新地址 # 删除远程 git remote remove github # 拉取远程最新代码 git pull 远程别名 分支名2.7 查看提交记录# 完整日志 git log # 单行简洁日志推荐 git log --oneline # 退出日志界面按 q2.8 分支核心操作# 查看本地所有分支 git branch # 创建分支 git branch feature/login # 切换分支 git checkout feature/login # 创建并切换(简写) git checkout -b feature/login # 合并分支把功能分支合并到master git checkout master # 1. 先切到主分支 git merge feature/login # 2. 合并 # 现代 Git 新版分支命令 git switch dev # 切换分支 git switch -b feature # 创建并切换分支 # 删除本地分支 git branch -d feature/login # 删除远程分支 git push github --delete feature/login # 推送所有本地分支到远程(低频适用于仓库迁移、新项目初始化) git push github --all # 推送版本标签(低频适用于项目发版打版本标签git tag v1.2.0 本地创建版本号执行本条命令同步到远程线上用户才能看到发布版本) git push github --tags # 把当前分支提交移植到目标分支末尾线性干净提交历史 git rebase # 只复制某一条 commit 到当前分支线上紧急 bug 修复同步多版本 git cherry-pick2.9 撤销/回滚操作高频2.9.1 未add撤销工作区修改# 旧兼容写法 git checkout -- . # 新版推荐Git≥2.23 git restore .2.9.2 已add未commit撤出暂存区# 旧兼容写法 git reset HEAD . # 新版推荐Git≥2.23 git restore --staged .2.9.3 已commit回退本地版本git log --oneline # 1. 默认 --mixed回退commit清空暂存区工作区保留修改 git reset 提交ID # 2. --soft 软重置仅移动HEAD暂存、工作区全部保留修改仍处于待提交状态 git reset --soft 提交ID # 3. --hard 硬重置彻底删除后续修改工作区和暂存区都清空执行前 git stash 备份 git reset --hard 提交ID2.9.4 已推送远程想要撤回远程版本2种场景场景1个人私有分支可强制推送本地先回退版本再强制覆盖远程# 1. 本地回退到目标提交 git reset --hard 目标commitID # 2. 强制推送到远程覆盖远程历史危险多人协作禁止 git push origin 分支名 --force场景2多人协作、公共分支main/master禁止强推用 revert 安全撤回不删除原有提交历史新增一条「反向提交」抵消旧修改历史完整保留安全无副作用。# 1. 找到你想要撤销的那条错误提交ID git log --oneline # 2. 生成一条新提交抵消该提交的改动 git revert 错误commitID # 3. 正常推送无需强制 git push origin main2.9.5 快捷修改最近一次提交git commit --amend# 1. 修改上一条提交备注 git commit --amend -m 修正后的提交描述 # 2. 漏提交文件追加到上一条提交保留原有备注 git add 遗漏文件 git commit --amend --no-edit # 3. 修改提交作者信息 git commit --amend --author张三 zhangsanxxx.com2.10 .gitignore 忽略文件配置项目根目录新建.gitignore文件配置无需Git追踪的文件/文件夹示例node_modules/ dist/ *.log .DS_Store .env # 密钥、环境配置禁止上传2.11 代码冲突解决多人修改同一文件同一行执行git pull/git merge会触发冲突文件冲突标记格式 HEAD 本地代码 远程代码 分支名解决步骤手动删除冲突标记保留最终需要的代码保存文件执行git add .提交冲突修复git commit -m 解决合并冲突3. 远程仓库鉴权与双仓库同步3.1 两种远程鉴权方式对比3.1.1 HTTPS 鉴权公开仓库无需账号密码仅可克隆、拉取无法推送Gitee私有库支持密码/Token登录临时使用便捷GitHub私有库完全禁用密码登录仅支持Token鉴权缺点单项目生效Token有过期风险换项目需重新配置3.1.2 SSH密钥鉴权推荐优点电脑全局免密一次配置永久生效可后台回收权限公私仓库通用缺点首次需生成密钥并绑定账号SSH密钥配置全流程# 生成密钥 ssh-keygen -t ed25519 -C zhangke2042qq.com # Windows复制公钥到剪贴板 cat ~/.ssh/id_ed25519.pub | clip # 网页粘贴公钥至GitHub/Gitee账号SSH设置 # 连通测试 ssh -T gitgithub.com ssh -T gitgitee.com生成公钥后粘贴到GitHub/Gitee账号的SSH配置页面即可完成绑定。3.2 双仓库同步实操GiteeGitHub3.2.1 配置双远程仓库# origin Gitee主仓库 # github GitHub同步仓库 git remote -v3.2.2 完整同步流程本地开发git add .→git commit -m 功能备注推送国内Gitee主仓库git push origin master同步推送GitHub仓库git push github master同步特性所有commit记录、时间、作者、修改文件完全保留无数据丢失。4. 企业级多环境部署架构4.1 常驻分支与环境对应关系main/master 主分支生产环境线上正式环境仅合并测试通过、评审完成的代码对外提供用户访问dev 开发分支开发环境开发日常迭代分支新功能全部合并至此用于开发自测test/pre 预发分支测试环境复刻线上环境测试人员全量验收bug稳定后合并到生产分支4.2 临时分支规范feature/xxx新功能开发分支功能上线后删除fix/xxx线上bug修复分支修复完成合并后删除5. 规范开发流程切换开发分支拉取最新代码git checkout dev→git pull origin dev新建功能分支开发git checkout -b feature/xxx本地编码完成提交快照git add .→git commit -m feat: 新增xxx功能推送本地分支到远程git push origin feature/xxx平台提交MR/PR目标分支选择dev完成代码评审评审通过合并至远程dev分支触发开发环境部署自测完成后合并dev到test分支进入测试环境验收测试bug全部修复、回归通过合并test到main生产分支线上发版部署拉取main最新代码上线清理本地远程无用临时分支强制规范禁止直接push主分支必须走MR/PR合并审核提交备注标准化feat(新功能)、fix(修复bug)、docs(文档修改)、refactor(代码重构)统一使用SSH鉴权规避Token过期问题所有敏感配置、密钥、隐私文件必须加入.gitignore6. 命令速查表高频必备使用场景Git命令查看远程仓库配置git remote -v常规代码提交git add . git commit -m xxx推送Gitee主分支git push origin master推送GitHub主分支git push github master新建并切换功能分支git checkout -b feature/xxx简洁查看提交日志git log --oneline撤销本地所有未提交修改git restore .测试SSH连通性ssh -T gitgithub.com / gitee查看工作区未提交改动git diff file查看暂存区改动git diff --staged file找回reset丢失的提交git reflog修改最近一次提交git commit --amend7. 高频易错点总结推送代码前务必先git pull拉取远程最新代码规避大量冲突main/master主分支禁止直接push必须通过分支合并代码评审上线密码、密钥、环境配置等敏感文件必须写入.gitignore严禁上传git reset --hard会永久丢失未备份代码操作前优先用git stash备份文件add暂存后git diff无输出需用git diff --staged查看暂存改动status用于查看改动概览diff用于查看具体代码差异二者分工不同reset参数区别--soft保留所有修改、--mixed清空暂存、--hard清空所有改动多人协作公共分支绝对禁止--force强推需用revert撤回版本8. 常见报错排查8.1 Invalid username or token原因GitHub禁用HTTPS密码登录Token失效/错误解决方案切换SSH鉴权方式或重新生成GitHub Token配置8.2 Repository not found原因仓库地址拼写错误、远程仓库未创建、SSH密钥未绑定对应账号解决方案核对仓库地址、确认远程仓库存在、重新绑定SSH密钥8.3 镜像自动跳转报错解决方案删除错误镜像配置git config --global --unset url.xxx.insteadOf8.4 代码合并冲突解决方案删除文件中冲突标记保留最终代码 →git add .→git commit完成修复9. 实战需求场景9.1 多人协作开发功能模块场景多人共同开发支付功能需要代码同步、评审、协作改bug流程1. 本地创建分支 git checkout -b feature/支付2. 推送到远程 git push origin feature/支付远程生成同名分支3. 本地写代码频繁 push 同步到远程同事可拉取你的分支4. 开发完成后在平台Gitee/GitLab提交 MR/PR[^1]远程页面完成代码评审5. 评审通过远程页面把 feature/支付 合并到 dev 远程主分支6. 拉取最新 dev 到本地再清理本地 远程功能分支git branch -d feature/支付 git push origin --delete feature/支付[^1]: PR为GitHub 平台专用叫法MR为GitLab / Gitee / Bitbucket 平台专用叫法二者都是把你远程功能分支的代码申请合并到远程主分支dev/main并提供线上评审流程。9.2 临时紧急修bug保留本地半成品代码场景dev分支开发未完成需要切main分支修复线上紧急bug但当前代码不能 commit1. git stash save 未完成支付模块 保存半成品工作区立刻变干净2. 切换 main 分支改 bug、提交、推送3. 切回 dev执行 git stash pop 恢复之前写一半的代码继续开发。 总结本文覆盖Git零基础入门到企业级实战全流程包含日常开发高频场景与命令可直接作为开发手册随时查阅熟练掌握可完全满足团队协作、版本管理、问题排查需求。