Git 指令大全

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 指令看似繁多,但核心逻辑都是围绕版本控制、分支协作展开,不用死记硬背,结合实际开发场景多练几遍,很快就能熟练掌握。

相关推荐
006_2 小时前
Java8的lambda用法总结
前端·数据库
minglie12 小时前
mqtt接入事件回调测试
前端·javascript
faithher2 小时前
Python 内存泄漏排查面试复盘
面试·职场和发展
Nontee2 小时前
Java 后端开发面试技能清单
java·面试
Luna-player2 小时前
Webpack vs Vite
前端·vue.js·webpack
我是初九2 小时前
【遇见狂神说|前端】HTML5
前端·html
Cg136269159742 小时前
js引入方式
前端·javascript·ajax
J超会运2 小时前
从零部署Nginx:Web全栈实战指南
运维·前端·nginx
顺天认证2 小时前
打破获客瓶颈!易流客全球获客系统助力企业实现业绩倍增
面试