开发知识库 #01:Git 全面操作教程

Git 全面操作教程

1. 基础配置与初始化

1.1 环境配置

  • 配置用户信息(提交代码必做,将关联你的提交记录):git config --global user.name "Your Name"git config --global user.email "your.email@example.com"(加global表示所有仓库生效,去掉则仅当前仓库生效)
  • 查看配置信息:git config --list(可快速查看所有全局及本地配置,排查配置异常)
  • 设置默认编辑器(避免弹出系统自带编辑器,推荐VS Code):git config --global core.editor "code --wait"
  • 多人协作关键配置(避免合并弹窗、提交历史混乱):git config --global pull.rebase true(设置后,执行git pull会自动用rebase同步代码,不产生多余合并提交)

1.2 仓库初始化

  • 创建新本地仓库:git init(在当前目录生成.git隐藏文件夹,完成本地仓库初始化)
  • 克隆远程仓库(新人入职高频操作):git clone [远程仓库URL](自动下载远程所有代码、分支,无需手动执行git init)
  • 查看仓库状态(日常高频):git status(快速查看工作区、暂存区的文件变更,确认是否有未提交内容)

2. 日常操作流程

2.1 工作区与暂存区操作

  • 将文件添加到暂存区(提交代码的必经步骤):git add [文件名](单个文件提交)或 git add .(添加当前目录所有变更文件,日常开发首选)
  • 提交暂存区文件(生成提交记录,便于后续回溯):git commit -m "提交说明"(说明需规范,详见8.2,禁止写"改了点东西"等模糊表述)
  • 查看提交历史:git log(查看完整提交历史)、git log --oneline(简洁模式,快速浏览所有提交)、git log --graph(图形化展示分支合并、变基记录,更直观)
  • 撤销工作区修改(未执行git add的文件,丢弃本地变更):git checkout -- [文件名](谨慎使用,撤销后无法恢复)
  • 撤销暂存区修改(已执行git add但未commit):git reset HEAD [文件名](文件退回工作区,保留本地修改,可重新调整后提交)

2.2 分支管理(多人协作核心)

  • 查看所有分支:git branch(*标识当前所在分支,清晰区分当前工作分支)
  • 创建新分支:git branch [分支名](仅创建分支,不切换到该分支)
  • 切换分支:git checkout [分支名]git switch [分支名](两种用法均可,switch语法更直观,新手推荐)
  • 创建并切换分支(日常开发最常用):git checkout -b [分支名]git switch -c [分支名](一步完成分支创建与切换)
  • 合并分支:git merge [源分支名](当前分支合并源分支内容,多人协作不推荐用于同步主干,仅适合将功能分支合并回主干)
  • 删除分支:git branch -d [分支名](删除已合并到主干的分支)或 git branch -D [分支名](强制删除未合并分支,谨慎使用,避免丢失代码)
  • 重命名分支:git branch -m [旧分支名] [新分支名](当前分支可省略旧分支名,直接执行git branch -m [新分支名])
  • 分支命名规范(多人协作必遵守,统一规范便于管理):功能分支 feature/功能名、bug修复分支 bugfix/问题描述(示例:feature/login、bugfix/login-error)

3. 高级操作(多人协作必备)

3.1 Rebase 操作(核心重点,避免合并历史混乱)

3.1.1 基本使用

  • 变基操作(同步远程/主干代码):git rebase [目标分支名](将当前分支基于目标分支进行变基,整合目标分支的最新变更,保持提交历史线性)
  • 解决冲突(变基过程中常见场景):变基出现冲突时,按以下步骤操作:1. 打开冲突文件,修改冲突内容(保留需要的代码);2. 执行 git add [冲突文件](标记冲突已解决);3. 执行 git rebase --continue(继续变基,直至全部完成)
  • 中止变基(冲突无法解决或不想继续变基):git rebase --abort(退回变基前的状态,不影响本地代码)
  • 跳过某次提交(特殊场景):git rebase --skip(跳过当前冲突的提交,谨慎使用,避免误删重要代码)
  • 交互式变基(整理提交记录):git rebase -i [commit哈希值](可合并、修改、删除提交记录,让历史更整洁,仅用于本地未推送的提交,避免影响他人)

3.1.2 使用时机(必记,多人协作不踩坑)

  • 多人协作同步远程主干代码时(优先使用,替代git merge),避免产生多余合并提交,保持历史整洁
  • 将本地分支推送到远程仓库前,基于远程主分支进行变基,确保提交历史线性、干净,便于团队审核
  • 整合本地多个零散提交(如多次小修改),生成清晰的提交记录,方便后续版本回溯和问题排查

3.2 Stash 操作(临时保存工作进度)

3.2.1 基本使用

  • 暂存工作区修改(未执行git add/commit):git stash(临时保存当前工作进度,工作区恢复干净,可切换分支或执行其他操作)
  • 暂存并添加说明(推荐,便于区分不同暂存内容):git stash save "暂存说明"(示例:git stash save "未完成登录功能开发")
  • 查看暂存列表:git stash list(显示所有暂存记录,格式:stash@{n}: 暂存说明,n为暂存序号)
  • 应用最近一次暂存(保留暂存记录):git stash apply(应用后暂存记录仍存在,可多次应用)
  • 应用指定暂存:git stash apply stash@{n}(n为暂存序号,从0开始,可精准应用需要的暂存内容)
  • 应用并删除暂存(日常常用):git stash pop(应用暂存内容后,自动删除该暂存记录,避免暂存列表冗余)
  • 删除指定暂存:git stash drop stash@{n}(删除不需要的暂存记录,释放空间)
  • 清空所有暂存:git stash clear(谨慎使用,清空后所有暂存记录无法恢复)

3.2.2 使用场景

  • 需要切换分支但不想提交当前工作区修改时(如临时修复紧急bug,无需提交未完成代码)
  • 拉取远程代码前,暂存本地未提交修改,避免拉取时出现冲突
  • 临时中断当前开发,处理其他紧急任务,保存当前工作进度,后续可继续开发

4. 远程仓库操作(多人协作核心流程)

4.1 远程仓库配置

  • 查看远程仓库(确认本地与远程关联状态):git remote -v(显示远程仓库名称、URL,默认远程名称为origin)
  • 添加远程仓库(本地仓库关联远程):git remote add [远程仓库名] [远程仓库URL](示例:git remote add origin github.com/xxx/xxx.git...
  • 修改远程仓库URL(远程仓库地址变更时):git remote set-url [远程仓库名] [新URL](无需删除重新添加,直接修改即可)
  • 删除远程仓库(解除本地与远程的关联):git remote remove [远程仓库名]

4.2 代码推送与拉取(高频操作,多人协作重点)

  • 推送分支到远程(首次推送):git push [远程仓库名] [本地分支名](示例:git push origin feature/login,首次推送需指定远程和本地分支)
  • 设置上游分支(推荐,简化后续推送操作):git push -u [远程仓库名] [本地分支名](设置后,后续可直接使用 git push 推送当前分支)
  • 拉取远程代码(核心重点,避免冲突关键):
  • 普通拉取(不推荐多人协作):git pull(等价于 git fetch + git merge,会产生合并提交,导致历史混乱)
  • 多人协作推荐:git pull --rebase [远程仓库名] [远程分支名](示例:git pull --rebase origin master,同步远程主干最新代码,不产生合并提交,保持历史干净)

获取远程分支信息(不合并代码):git fetch [远程仓库名](仅查看远程分支更新内容,不影响本地代码,适合先查看再决定是否合并/变基)

强制推送(谨慎使用,严禁滥用):git push -f [远程仓库名] [本地分支名](仅用于自己的功能分支,且确认远程分支无其他人修改,禁止在master/main等主干分支使用)

5. 版本回退与撤销(救急操作,避免代码丢失)

5.1 版本回退(已提交代码的回滚)

  • 回退到指定提交(彻底回滚,谨慎使用):git reset --hard [commit哈希值](哈希值可通过git log --oneline查看,回退后本地代码完全恢复到该提交状态,未提交修改会丢失)
  • 回退到上一个版本:git reset --hard HEAD^(^表示上一个版本,^^表示上两个版本,以此类推)
  • 回退到前n个版本:git reset --hard HEAD~n(n为数字,示例:HEAD~3表示回退3个版本)

5.2 撤销提交(保留修改,推荐使用)

  • 创建新提交来撤销某次提交(远程已推送代码首选):git revert [commit哈希值](不删除原有提交,生成新的撤销提交,避免影响他人代码)
  • 撤销最近一次提交(保留修改,未推送代码):git reset --soft HEAD^(删除提交记录,修改保留在工作区,可重新调整后提交)

6. 其他常用操作

6.1 差异比较(排查修改内容,定位问题)

  • 比较工作区与暂存区(未执行git add的修改):git diff(查看本地未暂存的具体变更内容)
  • 比较暂存区与本地仓库(已执行git add未commit的修改):git diff --cachedgit diff --staged(查看暂存后未提交的变更)
  • 比较两个分支的差异:git diff [分支1] [分支2](示例:git diff master feature/login,查看功能分支与主干的具体差异)
  • 比较某次提交的修改:git diff [commit哈希值1] [commit哈希值2](查看两个提交之间的具体变更内容,便于问题回溯)

6.2 标签管理(版本标记,适合发布版本)

  • 创建标签:git tag [标签名](轻量标签,仅标记提交,无额外说明)或 git tag -a [标签名] -m "标签说明"(附注标签,推荐,包含版本说明,便于区分)
  • 查看所有标签:git tag(快速浏览所有已创建的标签)
  • 推送标签到远程:git push [远程仓库名] [标签名](推送单个标签)或 git push [远程仓库名] --tags(推送所有标签,批量操作)
  • 删除标签:git tag -d [标签名](删除本地标签);git push [远程仓库名] :refs/tags/[标签名](删除远程标签,需先删除本地标签)

6.3 忽略文件(避免提交无关文件,保持仓库整洁)

  • 创建 .gitignore 文件(放在仓库根目录),添加需要忽略的文件或目录规则,Git会自动忽略这些文件的变更,不纳入提交范围
  • 常用规则(直接复制使用,适配前端/后端开发):
  • *.log(忽略所有.log后缀的日志文件)
  • /node_modules/(忽略根目录下的node_modules目录,前端开发必备)
  • /.env(忽略环境配置文件,避免泄露密码、密钥等敏感信息)
  • #(注释,不生效,用于说明规则用途)
  • !/src/utils.js(反向规则,不忽略该文件,用于特殊需求)

注意:若文件已被Git提交过,即使添加到.gitignore中也不会生效,需先执行 git rm --cached [文件名],再提交一次,即可生效。

7. 问题排查与解决(日常踩坑必备,快速排障)

7.1 查看提交详情

  • 查看某次提交的具体修改内容:git show [commit哈希值](清晰显示该提交修改的文件、具体变更内容,便于排查问题)

7.2 查找特定修改

  • 通过关键词查找提交(如查找修改某个功能、修复某个bug的提交):git log -S "关键词"(大小写敏感,加-i可忽略大小写,示例:git log -S "登录功能" -i)
  • 通过作者查找提交:git log --author "用户名/邮箱"(查看指定人员提交的所有记录,便于团队协作排查)

7.3 恢复误删文件

  • 恢复已提交但被删除的文件(未执行git commit):git checkout [commit哈希值] -- [文件名](从指定提交中恢复该文件,哈希值可查找删除前的提交记录)
  • 恢复已暂存但被删除的文件:git restore --staged [文件名](结合git checkout命令,可完全恢复文件)

7.4 常见冲突解决补充

  • 冲突标识说明:<<<<<<< HEAD(当前分支的代码)、=======(冲突分隔线)、>>>>>>> 分支名(待合并分支的代码)
  • 解决原则:保留需要的代码内容,删除所有冲突标识(<<<<<<<、=======、>>>>>>>),避免代码冗余或语法错误。

8. 工作流建议(多人协作规范,必遵守)

8.1 推荐工作流(功能分支工作流,适配绝大多数团队)

  1. 从master/main主干分支,创建功能分支(feature/xxx)或bug修复分支(bugfix/xxx),不直接在主干开发
  2. 在自己的分支上开发,每天至少提交1次代码,提交说明需规范,便于团队回溯
  3. 开发过程中,每天至少1次同步远程主干代码(使用git pull --rebase origin master),提前规避冲突
  4. 功能完成后,推送分支到远程,提交Pull Request(PR)/Merge Request(MR),等待同事Code Review(代码审核)
  5. 审核通过后,使用"Squash and Merge"(压缩合并)将分支合并回主干,保持主干提交历史整洁
  6. 合并完成后,删除功能分支(本地+远程),避免分支冗余,便于仓库管理

8.2 提交信息规范(统一格式,便于回溯和团队协作)

  • 格式:类型: 描述(冒号后加空格,描述简洁明了,不超过50字,精准说明提交内容)
  • 常用类型:
  • feat:新增功能(示例:feat: 实现用户登录验证功能)
  • fix:修复bug(示例:fix: 修复首页轮播图无法切换的问题)
  • refactor:重构代码(不新增功能、不修复bug,仅优化代码结构,提升可维护性)
  • docs:修改文档(示例:docs: 更新接口说明文档)
  • style:格式调整(不影响代码功能,如缩进、空格、代码格式规范)
  • test:添加/修改测试用例(完善测试覆盖,保障代码质量)
  • chore:构建/工具配置(示例:chore: 配置ESLint代码检查规则)

8.3 禁止行为(避免仓库混乱、代码丢失,必遵守)

  • 禁止直接在master/main主干分支上开发、提交代码,所有开发工作均在功能/修复分支进行
  • 禁止使用git merge同步远程主干代码(改用git pull --rebase,避免合并历史混乱)
  • 禁止强制推送(git push -f)到主干分支,避免覆盖他人代码
  • 禁止提交敏感信息(如密码、密钥、环境配置文件等,需添加到.gitignore)
  • 禁止提交超大文件(如视频、安装包等,建议使用云存储链接,避免占用仓库空间)
  • 禁止提交无关文件(如IDE配置、本地日志、临时文件等,需添加到.gitignore)

本教程涵盖Git全流程常用操作,包括基础配置、日常操作、分支管理、高级操作、远程仓库交互、版本控制及问题排查等核心内容,重点融入多人协作规范(如rebase用法、分支命名、提交规范),兼顾新人入门和团队日常查阅需求。建议将本教程保存为Markdown文件,方便随时调取使用,快速解决Git操作难题。

相关推荐
栩栩云生2 小时前
x-cmd v0.8.15: claw AI 助手升级,连微信、飞书更稳了;free 新增专家模式,直接把底层内存细节喂给你
github·agent·命令行
傻啦嘿哟3 小时前
Python 文件批量处理:重命名/备份/同步运维实战指南
linux·数据库·github
淘矿人4 小时前
Claude辅助算法设计与优化
人工智能·python·算法·microsoft·github·bug·pygame
逛逛GitHub4 小时前
给 10 万 Star 的 Hermes 装个记忆外挂,AI 终于能越用越聪明了。
github
王莎莎-MinerU5 小时前
MinerU 生态全接入:LangChain、Dify、RAGFlow、LlamaIndex 六大框架完整集成指南(2026)
计算机视觉·chatgpt·langchain·pdf·github·aigc
weixin_531651815 小时前
Git 操作指南
大数据·git·elasticsearch
神一样的老师7 小时前
【兆易创新GD32VW553开发板试用】 BSP 从 GitHub 下载与编译指南
单片机·github·rt-thread
一个程序猿老马8 小时前
003、Git核心概念:仓库、工作区、暂存区、版本库
大数据·git·elasticsearch
披着羊皮不是狼8 小时前
Git完整学习总结
git·学习·elasticsearch