Git版本控制完整教程
1、Git简介与核心价值1.1、Git在开发中的核心作用Git 在开发中可以管理好我们的代码包括代码的更改、删除、合并等极大提升团队协作效率和开发效率。实际运用场景在学校给的作业任务中要我们敲一个记账系统作为结课作业我们团队一起去敲代码那么如何将代码中写的功能给其他人最笨的方法是直接通过微信将文件压缩发送出去但这个方法太慢了并且它会随着文件的内存的增加导致发送的时间会不断延长。这还只是一个简单的个人项目的前端部分仅实现了基础的增删改查功能文件体积就已经如此庞大别说之后功能完善的项目了如果直接把文件发送给队员就很浪费时间开发效率也会被拖累更不要说之后的功能新增和删除还需要手动的去发送接收文件。但如果我们会 Git 就不一样了我们可以把项目代码直接上传到 GitHub 上面其他队员只需要安装 Git 并注册 GitHub 账号通过 Git 命令就能轻松获取项目代码。通过这个实际的案例我们可以看到 Git 在团队协作中的巨大价值免去手动传输文件的麻烦实现代码的即时同步和版本管理。常识我们把代码上传到Github上时不仅仅要去把项目代码上传还要去配置gitignore文件这个文件是用来声明哪一些代码不需要去上传到Github上的比如说 node_modules 还有 .env.local 文件等特别是现在是 AI 迅速发展的时代AI 密钥是常用的这就需要把 AI 密钥写在 .env.local 里面这个文件是我们自己创建的现在的发展可以靠 AI 去生成这部分 Git 代码和 .gitignore 里面的声明文件也可以靠 AI 生成。注意这里的代码不是全部的代码因为项目要跑起来不仅仅需要关键的代码还需要对应的依赖外部库封装的函数方法所以这个时候我们可以使用终端运行 npm i 就可以安装项目运行起来需要的对应依赖了也就是主要安装node_modules 文件。我使用的是 VSCode Git 命令、npm 命令都在下面的终端运行快捷键是 ctrl shift ~ 。注意这里的括号不是快捷键的一部分。1.2、为什么每个开发者都必须掌握Git:在上面的 1.1 内容中我们可以看到 Git 在团队协作开发中的巨大优势但这还不足以说明为什么 Git 是每个开发者必须掌握的技能让我们从以下几个关键维度来分析1.2.1、技术架构优势分布式 VS 集中式Git 采用分布式版本控制架构这与传统的集中式版本控制系统如SVN有本质的区别。集中式版本控制系统所有的代码都存储在中央服务器中服务器一旦损坏整个团队将无法工作每次的提交、查看历史等操作都需要连接网络同时服务器损坏可能会导致代码历史丢失。分布式版本控制中每一个开发者的本地仓库都是完整的副本包含全部的历史记录即使断网也可以正常提交代码、查看历史操作、创建分支同时数据有多重备份可以极大降低丢失的风险方便我们灵活地与多个远程仓库协作。这种分布式架构让 Git 在可靠性、灵活性和协作效率方面都远超集中式版本控制系统。1.2.2、求职就业需求Git 已经成为技术岗位的硬性要求可以从多个维度得到验证在牛客网、力扣等技术社区查看优秀简历可以搜索到超过 90% 的开发者都将 Git 作为必备技能列出缺乏 Git 经验的简历在筛选阶段可能被淘汰掉。在 Boss 直聘等招聘平台上绝大多数前端、后端、全栈岗位都明确要求需要熟悉 Git 版本控制从初创公司到一线大厂Git 都是技术面试的基础考点。面试上Git 分支管理是面试中的高频考点常问问题包含分支策略、合并冲突解决、工作流规范等掌握 Git 能体现开发者的工程素养和团队协作能力。1.2.3、个人开发价值即使独立开发Git 也能为个人项目带来显著价值部署现代部署平台如Vercel、阿里云等都深度集成 Git 部署流程通常为推送代码到 GitHub自动触发部署流水线没有 Git 仓库很多一键部署功能都无法使用。此外GitHub 等代码托管平台已成为程序员的‘技术名片’优质的项目仓库是求职时的有力证明。代码管理效率版本历史记录能随时回退到任意版本避免操作损失分支的出现可以安全尝试新功能不影响主线开发进度云端存储代码可以有效防止本地数据丢失。开发流程标准化即使单人项目使用 Git 也能培养良好的开发习惯为未来参与团队开发打下坚实基础。2、版本库创建与基础概念2.1、Git 工作区与版本库关系2.1.1、工作区就是你电脑里能看见的项目目录你在这里直接编辑、新建、删除文件。可以看作是你的书桌你需要在书桌上摊开稿纸随意书写、修改、甚至揉碎废弃编辑、新建、删除等操作的草稿。2.1.2、暂存区一个存放在 .git 目录下的中间区域也被称为“缓存区”它像一个准备台或打包区。可以看作是书桌旁边的一个文件框你把觉得写的不错、准备最终提交的草稿页暂时放进这个框里面。2.1.3、版本库工作区内的隐藏目录 .git 这是 Git 的核心他自动会创建第一个分支 master 以及指向 master 的指针 HEAD 。可以看作是书桌上的档案柜你把文件框里整理好的草稿打上标签提交信息然后永久地存入档案柜你可以随时从档案柜里取出任何一份历史版本。2.2、git init -- 初始化本地仓库在项目根目录执行git init会在当前目录创建一个.git子目录从此该目录就成为 Git 仓库。之后就可以进行版本控制操作了。3. Git 常用指令速查下面这些指令我问的是 AI 因为现在这些指令 AI 命中率很高正确率所以这部分你直接拿 AI 跑就行你大概看一下知道有哪些指令大概作用就可以了。3.1 仓库初始化与克隆命令说明git init在当前目录初始化一个新的 Git 仓库git clone 仓库地址克隆远程仓库到本地例如git clone https://github.com/user/repo.git3.2 查看状态与差异命令说明git status查看工作区和暂存区的当前状态哪些文件被修改、哪些未追踪等git diff查看工作区与暂存区之间的差异未暂存的修改git diff --staged查看暂存区与最新提交HEAD之间的差异已暂存的修改git log查看提交历史按时间倒序git log --oneline --graph以简洁图形方式查看分支历史非常实用git show commit-id查看某次提交的详细变更内容3.3 添加与提交核心三板斧命令说明git add 文件将指定文件添加到暂存区准备提交git add .添加当前目录下所有变更新增、修改、删除到暂存区git add -u仅添加已追踪文件的变更不包括新文件git commit -m 提交信息将暂存区内容提交到版本库并附上说明git commit -am 信息跳过git add直接提交所有已追踪文件的变更相当于git add -ucommit3.4 远程仓库操作命令说明git remote add origin url添加远程仓库通常命名为origingit remote -v查看当前配置的远程仓库地址git push origin 分支名将本地分支推送到远程仓库如git push origin maingit push -u origin 分支名首次推送并建立本地分支与远程分支的关联之后可直接git pushgit pull origin 分支名从远程仓库拉取最新代码并合并到当前分支相当于fetchmergegit fetch origin仅下载远程更新但不合并手动查看后再决定是否合并3.5 分支管理命令说明git branch列出所有本地分支当前分支前有*标记git branch 分支名创建一个新分支但不会切换git checkout 分支名切换到指定分支git switch 分支名Git 2.23 推荐的新命令用于切换分支git checkout -b 分支名创建并切换到新分支常用git switch -c 分支名同上新版推荐写法git merge 分支名将指定分支合并到当前分支git branch -d 分支名删除本地分支已合并的git branch -D 分支名强制删除本地分支即使未合并git push origin --delete 分支名删除远程分支3.6 撤销与回退命令说明git restore 文件撤销工作区对文件的修改恢复到暂存区或 HEAD 的状态git restore --staged 文件将文件从暂存区撤出但保留工作区修改git reset --soft HEAD~1撤销上一次提交但保留工作区和暂存区修改可重新提交git reset --mixed HEAD~1撤销上一次提交保留工作区修改但清空暂存区默认行为git reset --hard HEAD~1彻底撤销上一次提交同时丢弃工作区和暂存区所有修改危险丢失数据git revert commit-id创建一个新的提交用来撤销某次历史提交安全不影响历史3.7 标签管理常用版本发布命令说明git tag列出所有标签git tag 标签名创建轻量标签例如git tag v1.0git tag -a 标签名 -m 说明创建带注释的标签git push origin 标签名推送特定标签到远程git push origin --tags推送所有本地标签到远程git tag -d 标签名删除本地标签git push origin --delete 标签名删除远程标签3.8 其他实用命令命令说明git stash暂时保存工作区修改未提交让工作区恢复干净git stash pop恢复最近一次 stash 的修改并删除该 stashgit stash list查看所有 stashgit cherry-pick commit-id将某次提交“捡”到当前分支用于选择性合并git reflog查看本地所有操作记录包括被 reset 掉的提交用于恢复误操作git config --global user.name 你的名字设置全局用户名git config --global user.email 你的邮箱设置全局用户邮箱第一次使用 Git 时必须配置4、实际项目注意在实际项目开发中尤其是团队协作绝对不能直接在main或master主分支上开发或推送代码。正确的做法是先克隆clone远程仓库到本地然后基于主分支创建新的功能分支feature branch在分支上完成开发、测试最后通过合并请求Pull Request / Merge Request将代码合并回主分支。4.1 、为什么不建议直接 Push 到主分支你可能会想“我就改了一行代码直接推送上去不就行了吗”但在实际生产项目中直接往主分支推送会带来巨大风险绕过代码评审Code Review主分支通常受保护直接推送会跳过团队评审流程其实实际项目里面你可能没有这个权限但是不排除你公司领导没有做这部分的防护没做防护你直接 push 上去这样你就要被骂一顿容易引入低质量代码或逻辑漏洞。破坏构建稳定性如果推送的代码有问题比如忘记安装依赖、语法错误会导致整个项目的持续集成CI失败阻塞其他所有成员的开发进度。冲突难以处理多人同时往主分支推送时后推送的人大概率会遇到冲突。若对冲突处理不当可能导致他人的代码被覆盖或丢失。无法回滚与追溯直接在主分支上提交会让提交历史变得杂乱无章。一旦出问题很难快速定位并回滚到上一个稳定版本。记住主分支main/master必须是“随时可部署”的稳定状态它是项目的生命线不是个人的草稿本。记住主分支main/master必须是“随时可部署”的稳定状态它是项目的生命线不是个人的草稿本。

相关新闻

InceptionTime震撼登场:时间序列分类领域的AlexNet革命

InceptionTime震撼登场:时间序列分类领域的AlexNet革命

InceptionTime震撼登场:时间序列分类领域的AlexNet革命 【免费下载链接】InceptionTime InceptionTime: Finding AlexNet for Time Series Classification 项目地址: https://gitcode.com/gh_mirrors/in/InceptionTime InceptionTime是GitHub加速计划中的明星…

2026/11/5 6:18:21 阅读更多 →
计算机毕业设计之基于SpringBoot的餐饮库存追踪系统设计与实现

计算机毕业设计之基于SpringBoot的餐饮库存追踪系统设计与实现

随着信息技术的飞速发展和互联网的普及,线上管理平台已成为当今社会经济发展的重要驱动力之一。本研究旨在设计并实现一个基于Java的餐饮库存追踪系统,在技术选择上,本项目采用了JAVA语言,MySQL数据库编程,使用springb…

2026/11/12 19:41:23 阅读更多 →
C语言一维数组转二维数组的三种实现方法与性能对比

C语言一维数组转二维数组的三种实现方法与性能对比

1. 项目概述与核心价值在C语言编程的日常开发中,数据结构的转换是绕不开的基础操作。今天要聊的“一维数组转二维数组”,听起来简单,但里面藏着不少门道。很多新手,甚至一些有经验的开发者,在处理这个问题时&#xff0…

2026/11/7 1:00:59 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/12 5:00:00 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/12 5:13:20 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/12 5:13:20 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/12 18:22:26 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/12 18:22:25 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/12 5:13:20 阅读更多 →

日新闻

周新闻

月新闻