Git 指令大全|从入门到封神,开发场景全覆盖
哈喽大家好,我是豆芽包,作为日常开发离不开的版本控制神器,Git 要是用不熟练,不仅拖慢开发效率,还容易踩各种坑:代码丢了、分支乱了、合并冲突了......相信很多人都有过只会 add/commit/push 三板斧,遇到复杂场景就抓瞎的经历。
这篇文章我把 Git 核心指令按入门基础、进阶操作、团队协作、急救兜底 四大模块整理,搭配真实开发场景+可直接复制的命令示例,语言通俗易懂,逻辑层层递进,不管是新手入门还是老手速查,都能直接用。
📌 前置铺垫:Git 三大区域(搞懂这个少踩90%坑)
先理清 Git 核心工作流,所有指令都是围绕这三个区域流转,理解底层逻辑比死记硬背更重要:
- 工作区:本地写代码的文件夹,肉眼可见的文件修改
- 暂存区:git add 后存放待提交的文件,相当于"代码中转站"
- 本地仓库:git commit 后提交的版本库,存在本地.git文件夹
- 远程仓库:GitHub/Gitee/GitLab 上的云端仓库,git push 同步
简单记忆:工作区 → add → 暂存区 → commit → 本地仓库 → push → 远程仓库
一、入门基础指令(新手必学,日常开发高频)
这部分是 Git 基本功,覆盖初始化、提交、查看状态、同步远程等基础场景,也是日常用得最多的指令。
1.1 仓库初始化/克隆
场景1:本地新建项目,初始化Git仓库
bash
# 进入项目根目录,执行初始化
git init
执行后会生成隐藏的.git文件夹,代表仓库创建成功,千万别手动删这个文件夹!
场景2:拉取远程已有项目到本地
bash
# 标准克隆(完整拉取所有分支、提交记录)
git clone 远程仓库地址
# 浅克隆(只拉取最新代码,适合大项目提速)
git clone --depth=1 远程仓库地址
1.2 查看状态/文件变更
场景:写完代码想看看哪些文件修改了、是否提交
bash
# 查看工作区、暂存区状态(最常用,红色=未add,绿色=已add待commit)
git status
# 简洁版状态(适合老手速查)
git status -s
# 查看具体文件修改内容(对比工作区和暂存区)
git diff 文件名
# 查看所有文件修改内容
git diff
1.3 提交代码到本地仓库
场景:代码写完,暂存并提交到本地
bash
# 单个文件添加到暂存区
git add 文件名
# 所有修改文件添加到暂存区(慎用,记得先git status检查)
git add .
# 提交到本地仓库,-m 后面是提交说明(必须写,规范清晰)
git commit -m "feat: 完成登录接口开发"
# 一步到位:add+commit(仅限已追踪文件,新增文件不适用)
git commit -am "fix: 修复登录页样式bug"
提示:提交信息尽量规范,用feat/fix/docs/refactor等前缀,团队协作更清晰,后续查日志也方便。
1.4 同步远程仓库(拉取/推送)
场景:本地代码同步云端,或拉取队友代码
bash
# 推送本地代码到远程仓库(第一次推送需加-u)
git push -u origin 分支名
# 后续常规推送
git push
# 拉取远程最新代码(推荐,先拉再推避免冲突)
git pull
# 拉取但不自动合并(更安全,手动合并)
git fetch origin && git merge origin/分支名
二、进阶操作指令(提升效率,告别三板斧)
掌握基础指令后,这些进阶操作能大幅提升开发效率,处理分支、回退、日志等复杂场景。
2.1 分支管理(核心!团队协作全靠它)
Git 分支是灵魂,开发时建议遵循主分支稳定、功能分支开发的原则,避免直接在main/master上改代码。
场景1:查看/创建/切换分支
bash
# 查看本地所有分支
git branch
# 查看本地+远程所有分支
git branch -a
# 创建新分支(基于当前分支)
git branch 功能分支名
# 创建并直接切换到新分支(高频)
git checkout -b 功能分支名
# Git新版本推荐切换指令(更直观)
git switch 分支名
git switch -c 新分支名
场景2:合并分支/删除分支
bash
# 切换到主分支
git checkout main
# 合并功能分支到主分支
git merge 功能分支名
# 删除本地已合并的分支
git branch -d 功能分支名
# 强制删除未合并分支(慎用,代码会丢)
git branch -D 功能分支名
# 删除远程分支
git push origin --delete 远程分支名
2.2 提交日志查看
场景:想回溯历史提交、找之前的代码版本
bash
# 完整日志(按时间倒序)
git log
# 简洁单行日志(推荐,清晰不杂乱)
git log --oneline
# 图形化查看分支合并记录(适合复杂协作)
git log --graph --oneline --all
2.3 代码回退/撤销(后悔药必备)
场景1:工作区代码写错,想撤销修改(未add)
bash
# 撤销单个文件修改(恢复到上次commit状态)
git checkout -- 文件名
# Git新版本替代指令
git restore 文件名
场景2:文件add到暂存区,想撤销(未commit)
bash
# 撤销单个文件暂存
git reset HEAD 文件名
# Git新版本替代指令
git restore --staged 文件名
场景3:commit提交错了,想回退版本
perl
# 软回退(保留代码,撤销commit,回到暂存区)
git reset --soft 提交哈希值
# 硬回退(彻底删除该提交后的所有代码,慎用!)
git reset --hard 提交哈希值
重要提醒:已经push到远程的提交,千万别用git reset --hard,会导致团队代码冲突!建议用git revert反向提交。
三、团队协作指令(多人开发,避坑指南)
多人协作时,分支混乱、冲突频发是常态,掌握这些指令能轻松应对协作痛点。
3.1 处理合并冲突
场景:合并分支时提示CONFLICT,代码冲突
bash
# 1. 查看冲突文件
git status
# 2. 手动打开冲突文件,编辑解决(Git会标记冲突区域)
# 3. 解决后重新add+commit
git add .
git commit -m "merge: 解决xx分支合并冲突"
# 放弃合并,回到合并前状态
git merge --abort
3.2 变基操作(让提交记录更整洁)
场景:想让分支提交历史线性化,避免杂乱的merge记录
bash
# 切换到功能分支
git checkout feature
# 变基到主分支
git rebase main
# 变基遇到冲突,解决后执行
git rebase --continue
# 放弃变基
git rebase --abort
rebase 慎用在公共分支!仅用于自己的功能分支,避免打乱团队提交记录。
3.3 标签管理(发布版本用)
场景:项目上线,打版本标签方便回溯
bash
# 创建本地标签
git tag v1.0.0
# 创建带说明的标签
git tag -a v1.0.0 -m "发布正式版v1.0.0"
# 推送标签到远程
git push origin v1.0.0
# 查看所有标签
git tag
四、急救兜底指令(遇到突发问题,直接用)
开发中难免遇到手滑操作,这些指令能帮你快速止损,找回丢失代码。
- 找回误删分支:git reflog(查看所有操作记录,找到哈希值后git checkout -b 分支名 哈希值)
- 撤销远程错误提交:git revert 提交哈希值(生成新提交覆盖,不破坏历史)
- 清理未跟踪文件:git clean -df(删除本地未add的冗余文件)
- 暂存未完成代码:git stash(临时存代码,切分支处理紧急bug;恢复用git stash pop)
✍️ 写在最后
Git 指令看似繁多,但核心逻辑都是围绕版本控制、分支协作展开,不用死记硬背,结合实际开发场景多练几遍,很快就能熟练掌握。