《Git 完整入门教程(零基础到实战)》
Git 完整入门教程零基础到实战一、Git 核心概念1. 什么是 Git分布式版本控制系统用于跟踪文件修改、多人协作、版本回退、代码备份所有代码本地都有完整仓库无需联网即可操作。2. 三大区域工作区Working Directory本地文件夹你编辑代码的地方暂存区Stage/Index临时存放待提交修改add命令存入本地仓库Repository永久保存版本快照commit存入远程仓库Github/Gitee/GitLab云端共享仓库3. 核心名词commit版本快照每次提交生成唯一哈希值branch分支并行开发互不干扰master/main默认主分支新版 Git 默认 mainHEAD指针指向当前所在版本/分支remote远程仓库地址二、安装与配置1. 下载安装官网https://git-scm.com/Windows安装后打开Git BashMacbrew install gitLinuxapt install git2. 全局基础配置仅第一次配置# 设置用户名提交记录显示gitconfig--globaluser.name你的名字# 设置邮箱和Github/Gitee注册邮箱一致gitconfig--globaluser.email你的邮箱# 查看全局配置gitconfig--global--list# 查看单条配置gitconfig user.name三、本地仓库基础操作核心命令方式1新建项目初始化 Git# 进入项目文件夹cd/你的项目路径# 初始化git仓库生成隐藏文件夹 .gitgitinit方式2拉取远程已有项目到本地# 克隆远程仓库到本地gitclone shturl.cc/IpuQuTE2ZckLNunKsDB# 克隆并重命名本地文件夹gitclone https://github.com/xxx/xxx.git my-project3. 查看文件状态# 查看所有文件修改状态最常用gitstatus# 精简版状态gitstatus-s标识说明红色工作区未加入暂存绿色已加入暂存等待提交4. 添加文件到暂存区 git add# 添加单个文件gitaddindex.html# 添加全部修改文件不含删除gitadd.# 添加所有文件包括删除的文件gitadd-A# 添加指定后缀文件gitadd*.js5. 提交暂存区到本地仓库 git commit# 基础提交-m 填写版本说明必须写清楚修改内容gitcommit-m首页新增轮播组件# 跳过add直接提交所有已跟踪文件修改不包含新增文件gitcommit-am修复登录bug6. 查看提交日志# 完整日志gitlog# 简洁单行日志gitlog--oneline# 图形化分支日志gitlog--oneline--graph# 查看指定文件修改记录gitlog index.js四、撤销、回退操作高频踩坑1. 撤销工作区修改未add文件改坏了恢复成上次提交的版本# 单个文件gitcheckout -- index.html# 全部文件gitcheckout --.2. 取消暂存已add未commit文件add错了移出暂存区回到工作区gitreset HEAD index.html# 全部文件取消暂存gitreset HEAD.3. 版本回退已commit# 回退到上一个版本保留本地修改gitreset HEAD^# 回退到指定commit哈希值gitreset 5ac213# 彻底回退清空工作区所有修改谨慎gitreset--hardHEAD^gitreset--hard5ac213HEAD^上一个版本HEAD~2往前2个版本4. 查看所有历史包括被回退删除的commitgitreflog五、分支操作多人协作核心1. 分支基础命令# 查看本地所有分支* 代表当前分支gitbranch# 查看远程所有分支gitbranch-r# 创建新分支gitbranch dev# 切换到dev分支gitcheckout dev# 创建并直接切换分支最常用gitcheckout-bfeature/login# 删除本地分支分支已合并才能删gitbranch-ddev# 强制删除未合并分支gitbranch-Ddev2. 合并分支 merge场景开发分支写完合并到主分支 main# 1. 切换到主分支gitcheckout main# 2. 合并dev分支代码到maingitmerge dev冲突解决两个分支修改了同一文件同一行会提示冲突打开冲突文件删除 HEAD、、 分支名标记保留需要的代码保存文件重新git add .git commit -m 解决合并冲突3. 变基 rebase整洁提交记录# 在dev分支把main最新代码合并过来线性提交记录gitcheckout devgitrebase main六、远程仓库Github/Gitee 上传拉取1. 绑定远程仓库# 添加远程仓库origin是远程仓库默认别名gitremoteaddorigin shturl.cc/3pl8KsCRNnbt15LLGxOz# 查看已绑定远程gitremote-v# 修改远程地址仓库迁移时用gitremote set-url origin 新仓库地址# 删除远程绑定gitremote remove origin2. 推送本地代码到远程 git push# 首次推送关联本地main分支和远程maingitpush-uorigin main# 后续直接推送gitpush origin main# 推送所有本地分支gitpush--allorigin# 推送标签gitpush origin--tags3. 拉取远程最新代码# 拉取远程代码并自动合并fetch mergegitpull origin main# 仅下载远程代码不合并gitfetch origin# 手动合并gitmerge origin/main七、忽略文件 .gitignore项目根目录新建.gitignore写入不需要Git跟踪的文件示例模板# 系统缓存 .DS_Store Thumbs.db # 依赖文件夹 node_modules/ venv/ dist/ build/ # 环境配置、密钥 .env *.pem config.local.js # 日志 *.log # IDE缓存 .idea/ .vscode/ *.swp注意文件已经被git跟踪后再写进ignore不会生效需要先删除缓存git rm --cached 文件名八、标签 tag版本发布 v1.0.0# 创建轻量标签gittag v1.0.0# 创建带说明的标签gittag-av1.0.0-m正式1.0版本发布# 查看所有标签gittag# 推送单个标签到远程gitpush origin v1.0.0# 推送全部标签gitpush origin--tags# 删除本地标签gittag-dv1.0.0# 删除远程标签gitpush origin :v1.0.0九、多人协作完整标准流程拉取主分支最新代码gitcheckout maingitpull origin main创建开发分支开发功能gitcheckout-bfeature/register写完代码提交本地gitadd.gitcommit-m完成注册页面推送开发分支到远程gitpush-uorigin feature/register远程仓库提交 Pull Request/Merge Request代码评审评审通过后合并到 main 分支本地切换main拉取合并后的最新代码gitcheckout maingitpull origin main十、常用高频速查表功能命令初始化仓库git init克隆仓库git clone 地址查看状态git status加入暂存git add .提交版本git commit -m “备注”查看日志git log --oneline创建切换分支git checkout -b xxx合并分支git merge xxx绑定远程git remote add origin 地址推送代码git push origin main拉取代码git pull origin main撤销工作区修改git checkout – .彻底回退版本git reset --hard 哈希十一、常见问题解决推送报错远程有本地没有的代码先git pull拉取合并再 push忘记写commit备注修改上一次提交git commit --amend本地多提交合并成一条提交MR前整理记录git rebase -i HEAD~3合并最近3次提交误提交敏感文件到仓库用git filter-repo彻底清除历史记录附录一、通用 .gitignore 完整模板直接复制保存为项目根目录.gitignore# 系统文件 .DS_Store .DS_Store? ._* .Spotlight-V100 .Trashes ehthumbs.db Thumbs.db # IDE 缓存 .idea/ .vscode/ *.suo *.ntvs* *.njsproj *.sln *.sw? *.swp *~ # 前端 Node node_modules/ npm-debug.log* yarn-debug.log* yarn-error.log* .pnpm-debug.log* dist/ build/ coverage/ .vercel .turbo # Python __pycache__/ *.pyc *.pyo *.pyd venv/ env/ *.env .env.local .env.development .env.production # Java target/ *.class *.jar *.war *.log .gradle build/ out/ # C/C cmake-build-*/ *.o *.exe *.dll *.so *.out # 日志 *.log logs/ # 密钥、配置 *.pem *.key secret.json config.local.yaml # 压缩包 *.zip *.rar *.7z *.tar.gz附录二、Git 实操练习流程跟着敲一遍就能吃透1. 初始化本地仓库# 新建文件夹并进入mkdirgit-democdgit-demo# 初始化gitgitinit# 配置用户名邮箱仅第一次执行gitconfig user.nametestgitconfig user.emailtest163.com2. 创建文件、跟踪提交# 创建文件echohello gitindex.txt# 查看状态红色未暂存gitstatus# 添加到暂存区gitaddindex.txt# 提交本地仓库gitcommit-m第一次提交新增index.txt# 查看提交记录gitlog--oneline3. 修改文件、二次提交echoadd new lineindex.txtgitadd.gitcommit-m更新文本内容gitlog--oneline4. 分支练习# 创建并切换dev分支gitcheckout-bdevechodev分支内容dev.txtgitadd.gitcommit-mdev分支新增文件# 切回主分支gitcheckout main# 合并dev到maingitmerge dev5. 回退版本演示# 查看历史记录复制前面7位hashgitlog--oneline# 软回退保留修改gitreset HEAD^# 彻底清空修改回退# git reset --hard HEAD^6. 关联远程仓库上传代码Gitee/Github 新建空仓库复制仓库地址# 绑定远程gitremoteaddorigin shturl.cc/aXMa9S8HauLqkUkKBYDJ6Zc6# 首次推送关联分支gitpush-uorigin main附录三、高频小技巧修改上一次提交备注gitcommit--amend清空所有未提交修改gitcheckout --.取消已add的文件gitreset HEAD.拉取远程代码不自动合并gitfetchgitmerge origin/main需要我把这份教程压缩成一页Git速记命令清单方便你保存吗