【Git学习笔记:手把手教你玩转版本控制】
Git学习笔记手把手教你玩转版本控制一、先看场景这些情况你是不是经常遇到场景1代码改坏了想回退下午三点你正在修改登录功能。测试时发现整个系统崩了想回到上午的版本但已经覆盖了。怎么办# 查看所有历史版本gitlog--oneline# 回到上一个版本瞬间恢复gitcheckout HEAD~1.# 或者回到指定版本gitcheckout abc1234.Git就是后悔药随时可以回到任何一个历史版本。场景2同时要干好几件事你正在开发用户头像上传功能产品经理突然说登录页有个紧急bug要修。两个任务不能混在一起怎么办# 把当前工作暂存起来相当于临时保存gitstash# 新建分支修buggitcheckout-bhotfix-login# 修完bug提交gitaddlogin.jsgitcommit-mfix: 修复登录页验证码不刷新# 回到原来的分支继续工作gitcheckout feature-avatargitstash pop分支就是平行宇宙让你同时推进多个任务。场景3和同事改同一行代码你和同事同时修改了user.py他先提交了你再提交时发现冲突了。# 先拉取最新代码gitpull# Git会提示CONFLICT打开user.py会看到# HEAD# 你的代码# # 同事的代码# feature-payment# 跟同事商量保留哪个删除标记行改为最终版本gitadduser.pygitcommit-mmerge: 解决user.py冲突冲突不可怕删掉标记选一个就行。场景4代码要分享给团队本地开发完了要推送到云端让其他人也能用。# 第一次推送gitremoteaddorigin https://gitee.com/team/shop.gitgitpush-uorigin main# 之后推送就简单了gitpush场景5下载别人的代码同事开发了新功能你要下载下来看看。gitclone https://gitee.com/team/shop.git二、核心概念重要1. 三个区域要分清Git管理代码分三层工作区你正在编辑的文件就是文件夹里的那些暂存区准备提交的修改类似购物车先放进去仓库区已经提交的版本历史永久保存的地方流程工作区 → git add → 暂存区 → git commit → 仓库区2. 为什么非要分两步比如你改了5个文件3个是功能A2个是功能B想分开提交# 先提交功能Agitaddfile1.js file2.jsgitcommit-mfeat: 完成用户注册# 再提交功能Bgitaddfile3.js file4.jsgitcommit-mfeat: 完成验证码这样历史记录清晰方便查找。3. Git和GitHub不是一回事GitGitHub本质电脑上的软件网站平台运行本地需要联网作用管理本地版本存放代码的云盘三、安装和配置1. 安装Windows去 git-scm.com 下载安装包安装时一路默认。Mac自带Git打开终端直接用。Linux# Ubuntu/Debiansudoaptinstallgit# CentOS/RHELsudoyuminstallgit2. 首次配置# 告诉Git你是谁全局配置一次就行gitconfig--globaluser.name你的名字gitconfig--globaluser.email你的邮箱这个信息会出现在每次提交记录里。3. 初始化仓库# 进入项目文件夹cd/path/to/project# 初始化会创建.git文件夹gitinit四、日常操作最常用1. 查看状态gitstatus红色已修改但没add绿色已add等待commit2. 添加到暂存区# 添加单个文件gitaddindex.html# 添加多个文件gitaddstyle.css script.js# 添加所有修改慎用gitadd.建议养成精确添加的习惯别用git add .3. 提交保存gitcommit-m说明说明要规范格式类型: 描述feat: 新功能fix: 修复bugdocs: 文档style: 格式调整refactor: 重构例子gitcommit-mfeat: 实现用户登录功能gitcommit-mfix: 修复购物车数量计算错误4. 查看历史# 详细历史gitlog# 简洁版推荐gitlog--oneline五、分支操作1. 为什么要用分支主分支main是稳定版本永远保持可运行。新功能、bug修复都在其他分支进行完成后再合并不会影响主版本。2. 常用命令# 创建并切换到新分支一步到位gitcheckout-bfeature-cart# 查看所有本地分支带*的是当前分支gitbranch# 切换分支gitcheckout main# 合并分支先切换到目标分支gitcheckout maingitmerge feature-cart# 删除已合并的分支gitbranch-dfeature-cart# 强制删除未合并的分支gitbranch-Dfeature-cart六、远程仓库1. 关联远程仓库gitremoteaddorigin https://gitee.com/team/project.git# 查看远程仓库信息gitremote-v2. 推送到远程# 第一次推送-u是绑定分支gitpush-uorigin main# 之后直接gitpush3. 从远程拉取gitpull4. 克隆远程项目gitclone https://gitee.com/team/project.git七、解决冲突1. 冲突表现执行merge或pull时如果两人同时修改同一行终端会提示CONFLICT。2. 解决步骤打开冲突文件找到、、标记和队友商量保留哪个删除标记行改为最终代码重新add和commit# 冲突文件示例PythonHEADdefcalculate():returnprice*1.2defcalculate():returnprice*1.5feature-discount# 改为最终版本defcalculate():returnprice*1.5# 然后git addfile.py git commit-mmerge: 解决价格计算冲突3. 减少冲突的习惯每天开工先git pull小步提交不要一次改很多改公共文件前先沟通严格按分支分工八、忽略文件有些文件不需要提交依赖包、日志、密码配置等。在项目根目录创建.gitignore# 依赖包 node_modules/ vendor/ # 环境配置包含密码密钥 .env .env.local # 编译产物 dist/ build/ __pycache__/ # 系统文件 .DS_Store Thumbs.db # 日志 *.log九、团队协作完整流程开发购物车功能的完整流程# 1. 克隆项目首次gitclone https://gitee.com/team/shop.git# 2. 每天早上先拉取最新代码gitpull origin main# 3. 创建功能分支gitcheckout-bfeature-cart# 4. 开发功能...# 5. 提交gitaddcart.js cart.cssgitcommit-mfeat: 实现购物车基本功能# 6. 推送分支到远程gitpush origin feature-cart# 7. 在网页上创建Pull Request# 8. 审核通过后清理gitcheckout maingitpullgitbranch-dfeature-cart十、常见问题汇总Q1: 提交信息怎么写格式类型: 描述gitcommit-mfeat: 新增用户头像上传gitcommit-mfix: 修复支付失败问题gitcommit-mdocs: 更新READMEQ2: 撤销修改# 撤销未提交的修改工作区gitcheckout -- file.js# 撤销已add但未commit回到工作区gitreset HEAD file.js# 撤销已commit回到上一个版本gitreset--hardHEAD~1Q3: 分支命名规范main/master: 主分支稳定版本develop: 开发分支feature-xxx: 功能分支hotfix-xxx: 紧急修复bugfix-xxx: 普通修复Q4: git stash是什么临时保存工作进度切换分支时常用# 保存当前工作gitstash# 查看保存的进度gitstash list# 恢复工作gitstash pop# 删除保存的进度gitstash drop十一、命令速查表操作命令初始化git init克隆git clone 链接查看状态git status添加文件git add 文件名提交git commit -m 说明查看历史git log --oneline创建分支git checkout -b 分支名切换分支git checkout 分支名合并分支git merge 分支名删除分支git branch -d 分支名关联远程git remote add origin 链接推送git push拉取git pull撤销修改git checkout -- 文件名总结Git核心流程改代码 → add → commit → push记住这个顺序就能玩转版本控制。刚开始可能会觉得麻烦但当你需要回溯历史、团队协作时你会庆幸自己学会了Git。

相关新闻

最新新闻

日新闻

周新闻

月新闻