30个Git命令,覆盖你90%的日常开发场景

近期工作,发现一个特别普遍的问题——

Git 命令都会背,一到实际场景就懵。

比如这几个经典时刻,你中了几条:

  • 😵 代码写一半,突然要切分支修紧急 bug,当前代码怎么办?

  • 😱 git commit 完发现备注写错了,能改吗?

  • 🤯 合并分支弹出一堆冲突标记,头皮发麻……

  • 💀 听说 git reset --hard 能回退,一按,代码全没了……

别慌,这些场景我都踩过坑。

这篇教程不给你背命令,只讲场景。 每个命令都配真实开发案例和踩坑提醒,帮你把 Git 从"记忆负担"变成"肌肉记忆"。


一、先搞懂三个区域,后面所有命令就不慌了

在动手之前,咱们用 30 秒搞清楚 Git 的核心流转逻辑。搞懂这个,后面所有命令你都能秒懂:

区域通俗理解类比
工作区你电脑文件夹里肉眼看到的文件你的书桌
暂存区 (Stage)临时中转站,git add 后文件先到这信封
本地仓库 (.git)存放所有版本快照保险柜
远程仓库Gitee/GitHub/GitLab 云端仓库网盘

流转链路(记住这条链,后面所有命令都在这个链上操作):

修改文件 → git add 暂存 → git commit 提交本地 → git push 推送到远程

💡 老手习惯:面试被问"Git 工作原理",把这条链路说清楚,直接加分。


二、环境配置——30 秒搞定,以后不用再管

1. 确认 Git 装好了

git --version

输出示例:

git version 2.42.0.windows.1

有版本号就说明装好了 ✅

2. 配置你的身份(必须!否则提交没有名字)

# 配置姓名
git config --global user.name "Li Hua"
# 配置邮箱(建议和 Gitee/GitHub 注册邮箱一致)
git config --global user.email "lihua@163.com"

3. 查看配置是否生效

git config --global --list

输出示例:

user.name=Li Hua
user.email=lihua@163.com
pull.rebase=true
init.defaultBranch=main
color.ui=auto

💡 小技巧--global 表示全局配置,一台电脑只需要配一次。之后所有项目都用这个身份提交。

⚠️ 踩坑预警:很多人装完 Git 忘了配邮箱就开始提交,结果 commit 记录里显示一个陌生名字,团队协同一脸尴尬。


三、创建本地仓库——两种方式,按需选择

方式 1:从零开始,新建一个空项目

场景:老板说"搞个新项目",你本地啥都没有。

# 1. 创建项目文件夹并进入
mkdir vue-demo
cd vue-demo
​
# 2. 一键初始化 Git 仓库
git init

输出:

Initialized empty Git repository in D:/code/vue-demo/.git/

这时候你的文件夹里多了一个隐藏的 .git 目录,这就是你的"版本保险柜"。

💡 老手习惯mkdir + cd + git init 三步走,几乎是每个项目的起手式,形成肌肉记忆就行。

方式 2:从远程仓库拉下来(团队协作最常用)

场景:同事已经建好仓库了,你需要把代码 clone 到本地开发。

# 直接克隆
git clone https://gitee.com/xxx/vue-manage.git

执行后自动生成 vue-manage 文件夹,代码和 .git 都齐全。

# 克隆并自定义文件夹名称
git clone https://gitee.com/xxx/vue-manage.git admin-project

代码会下载到 admin-project 文件夹,适合你想自己命名项目目录的场景。


四、暂存、提交——你每天重复最多的操作

准备场景:项目里新建了 3 个文件:index.htmlstyle.cssapp.js

1. git status——"我改了啥?"

场景:开发到一半,想确认自己改了哪些文件,哪些还没提交。

git status

输出:

Untracked files:
  index.html
  style.css
  app.js

更推荐用简洁版:

git status --short

输出:

?? index.html
?? style.css
?? app.js

看懂这几个标记就行:

  • ?? = 新文件,Git 还不认识它

  • 红色 = 修改了但没暂存

  • 绿色 = 已暂存,等待提交

💡 老手习惯:写代码过程中随时 git status --short 瞄一眼,养成"开发前先看看状态"的习惯,能避免很多低级错误。

2. git add——把修改"打包"准备提交

场景:代码改完了,告诉 Git "这些文件可以准备提交了"。

# 只添加一个文件
git add index.html
​
# 添加某一类文件
git add *.js
​
# 不管改了多少,全部打包(日常最常用 ✅)
git add .

💡 小技巧git add . 是日常用得最多的命令,写完代码直接一把梭,全放进去。那个 .(点号)代表"当前目录下所有文件"。

⚠️ 踩坑预警:如果你没配好 .gitignore(后面会讲),git add . 会把 node_modules.env 这些不该提交的文件也加进去,很尴尬。

3. git commit——正式打个包,存进保险柜

场景:暂存区的文件准备好了,正式生成一个"版本快照"。

git commit -m "feat: 初始化首页html、样式、js基础文件"

输出示例:

3 files changed, 30 insertions(+)
create mode 100644 index.html
create mode 100644 style.css
create mode 100644 app.js

进阶用法:修改已有文件后,跳过 add 直接提交

# -a 参数 = 自动 add 所有已跟踪文件的修改
git commit -am "fix: 调整首页文字排版"

💡 小技巧-am 组合拳只对"已跟踪过的文件"有效。新建的文件还是得老老实实 git addcommit

后悔药:修改上一条 commit 的备注

git commit --amend -m "feat: 初始化首页基础页面结构与样式"

⚠️ 踩坑预警--amend 只能在还没 push 到远程的时候用!已经推送到远程的 commit,别用这个,会搞乱历史。

4. git log——查看提交记录

场景:想看看之前都提交了什么,或者需要找到某个版本的 ID 来回退。

# 完整日志(信息很多,日常不太用)
git log
​
# 单行精简版(强烈推荐 ✅)
git log --oneline

输出:

2f91ac3 (HEAD -> main) feat: 初始化首页基础页面结构与样式

前面的 2f91ac3 就是这次提交的唯一身份证号,回退版本就靠它。

# 图形化查看分支历史
git log --oneline --graph

💡 老手习惯:日常开发用 git log --oneline 就够了。想更花哨可以加 --graph --all 看所有分支的提交图。


五、.gitignore——别让垃圾文件污染你的仓库

场景:项目跑起来后会产生各种日志文件、node_modules、IDE 缓存……这些东西不需要提交到仓库,但你 git add . 的时候它们会混进来。

.gitignore 就是告诉 Git:"这些文件,你别管。"

完整模板(直接复制用)

# 日志文件
*.log
app.log
error.log
​
# 依赖文件夹
node_modules/
dist/
build/
​
# IDE 配置文件
.idea/
.vscode/
*.swp
​
# 系统文件
.DS_Store
Thumbs.db
​
# 特殊:不忽略某个文件(取反语法)
!important-config.js

💡 小技巧:不同语言/框架的 .gitignore 模板不一样。推荐直接去 gitignore.io 生成,选你的技术栈就完事了。

已经误提交了怎么办?

假设 app.log 已经被你提交到仓库了,现在想忽略它:

# 只移除 Git 跟踪,本地文件保留不删
git rm --cached app.log
git commit -m "chore: 忽略日志文件"

⚠️ 踩坑预警git rm(不带 --cached)会同时删除本地文件!带 --cached 才是只取消跟踪。这个区别一定要记住。


六、撤销与回退——写错代码的后悔药

这部分是踩坑重灾区,我会把每个操作的风险说清楚。

场景 1:文件改乱了,想恢复到上次提交的版本

# 恢复单个文件
git checkout -- index.html
​
# 恢复所有文件(一把梭)
git checkout -- .

⚠️ 踩坑预警:这个操作是不可逆的!没提交的修改会直接消失。如果不确定要不要恢复,先 git stash 存一下(后面讲)。

场景 2:已经 git add 了,但不想提交这些文件

# 取消单个文件的暂存
git reset HEAD index.html
​
# 取消所有文件的暂存
git reset HEAD .

放心,这个操作不会删除你的文件修改,只是把它们从暂存区退回到工作区。

场景 3:版本回退(需要 commit ID)

先通过 git log --oneline 拿到要回退到的版本号,比如 2f91ac3

# ① 软回退(safe):撤销 commit,但修改保留在暂存区
git reset --soft 2f91ac3
​
# ② 硬回退(危险⚠️):撤销 commit,未提交的修改全部清空!
git reset --hard 2f91ac3
​
# 快速回退到上一个版本
git reset --hard HEAD~1

💡 记忆口诀

  • --soft = 只撤销 commit,代码还在暂存区

  • --mixed(默认)= 撤销 commit + add,代码回到工作区

  • --hard = 全部清空,回到那个版本干干净净

⚠️ 踩坑预警git reset --hard 是我见过最多人"翻车"的命令。已经执行了,没提交的修改就真没了。我的建议:执行前一定先 git stashgit branch backup 留个备份


七、分支操作——团队协作的核心技能

为什么要用分支?

想象一下:你正在开发"登录页面",代码写了一半,突然线上出了个紧急 bug 要修。你总不能把半成品推上去吧?

分支就是让你"分身"——主线代码不受影响,你在自己的分支上随便折腾。

1. 查看、创建、切换分支

# 查看当前所有本地分支
git branch

输出:

* main

* 标记的就是你当前所在的分支。

# 创建并切换到新分支(新版 Git 推荐写法 ✅)
git switch -c feat/login
​
# 旧版写法(老项目常见)
git checkout -b feat/login
​
# 切回主分支
git switch main

💡 小技巧:分支命名建议用 feat/xxx(新功能)、fix/xxx(修复 bug)这种前缀,团队一眼就能看出这个分支是干嘛的。

2. 删除分支

# 安全删除(已合并到主分支的)
git branch -d feat/login
​
# 强制删除(未合并的,谨慎!)
git branch -D feat/login

⚠️ 踩坑预警-D 强制删除会丢失该分支上所有未合并的代码。删除前请三思。

3. 合并分支(merge)——完整实操

场景:登录功能开发完毕,要把代码合回主分支。

# 第一步:切回主分支
git switch main
​
# 第二步:拉取远程最新代码(防止冲突)
git pull origin main
​
# 第三步:合并功能分支
git merge feat/login
​
# 第四步:推送合并后的代码
git push origin main

4. 合并冲突怎么办?

合并时如果弹出了这样的提示:

Auto-merging index.html
CONFLICT (content): Merge conflict in index.html

别慌!打开冲突文件,你会看到这样的标记:

<<<<<<< HEAD
<h1>首页</h1>
=======
<h1>登录页面</h1>
>>>>>>> feat/login

怎么解决?

  1. 手动删掉 <<<<<<<=======>>>>>>> 这些标记

  2. 保留你需要的代码(可以两边的都保留、也可以只留一边)

  3. 保存文件,然后:

git add .
git commit -m "merge: 合并登录功能分支"

💡 老手习惯:冲突不复杂,本质就是"Git 不知道怎么选,让你来选"。多人协作冲突很正常,别怕。用 VSCode 的话,它自带冲突解决工具,点一点就能搞定。

5. rebase 变基——让提交历史更漂亮

场景:你开发了好几天,提交了很多次。合并前想把提交记录整理成一条线,看起来更清爽。

# 在功能分支上执行
git switch feat/login
git rebase main

如果出现冲突,解决后继续:

git rebase --continue

中途反悔想放弃:

git rebase --abort

⚠️ 踩坑预警:rebase 会改写提交历史。已经 push 到远程的公共分支,千万别 rebase,否则队友会疯。记住:rebase 只用在本地私有分支上。


八、远程仓库——和团队同步代码

1. 查看和管理远程仓库

# 查看远程仓库地址
git remote -v

输出:

origin  https://gitee.com/xxx/vue-demo.git (fetch)
origin  https://gitee.com/xxx/vue-demo.git (push)

origin 是远程仓库的默认别名,你可以理解为"远程仓库的昵称"。

# 本地新项目关联远程仓库
git remote add origin https://gitee.com/xxx/vue-demo.git
​
# 更换远程仓库地址
git remote set-url origin git@gitee.com:xxx/vue-demo.git

2. 拉取代码

# fetch:只拉取,不合并(安全推荐 ✅)
git fetch origin
​
# pull:拉取 + 自动合并(方便但可能冲突)
git pull origin main

💡 老手习惯:老手更喜欢先 fetch 看看远程更新了什么,再手动 merge,心里有数。pull = fetch + merge,省事但不够可控。

3. 推送代码

# 首次推送,-u 绑定远程关联(以后就能直接 git push)
git push -u origin main
​
# 之后日常推送,直接简写
git push
​
# 推送功能分支到远程
git push origin feat/login

💡 小技巧-u 只需要用一次。绑定后 Git 就记住了"我这个分支对应远程哪个分支",后面直接 git push 就行。


九、stash——代码写到一半,先藏起来

场景:你正在开发用户列表页面,代码写到一半——突然线上出了个紧急 bug 必须马上修。

你的半成品代码又不能 commit 上去(功能没写完啊),怎么办?

答案:用 stash 藏起来。

# 第一步:储藏当前所有未完成的修改,顺便写个备注
git stash save "临时储藏:用户列表页面开发一半"
​
# 第二步:现在工作区干净了,切到别的分支修 bug 去
git switch main
# …… 修 bug,提交,push ……
​
# 第三步:切回原分支
git switch feat/user
​
# 第四步:恢复之前藏起来的代码
git stash pop

其他 stash 相关操作:

# 查看所有储藏记录
git stash list

输出:

stash@{0}: On feat/user: 临时储藏:用户列表页面开发一半

💡 小技巧git stash pop = 恢复 + 删除记录。如果你想恢复但保留 stash 记录(比如还要在别的分支用),用 git stash apply


十、tag 版本标签——给项目打个"毕业照"

场景:项目 v1.0.0 正式上线了!你想在这个版本留个标记,以后能随时找到这个版本。

# 创建带备注的正式标签(推荐)
git tag -a v1.0.0 -m "release 正式版本v1.0.0,完成首页、登录功能"
​
# 查看所有标签
git tag
# 输出:v1.0.0
​
# 推送标签到远程(标签不会自动随 push 上传!)
git push origin v1.0.0
# 删除本地标签
git tag -d v1.0.0
​
# 删除远程标签
git push origin --delete v1.0.0

⚠️ 踩坑预警:很多人 git push 完发现远程没有 tag——因为标签需要单独推送!要么 git push origin v1.0.0 推单个,要么 git push origin --tags 一次性推所有标签。


十一、两套完整开发流程——直接复制就能用

流程 1:新项目从零上传到远程仓库

# 1. 全局配置(只需一次)
git config --global user.name "Li Hua"
git config --global user.email "lihua@163.com"
​
# 2. 创建项目并初始化 Git
mkdir vue-admin
cd vue-admin
git init
​
# 3. 写代码,配 .gitignore
# (你的开发工作)
​
# 4. 提交到本地仓库
git add .
git commit -m "feat: 项目初始化基础框架"
​
# 5. 关联远程仓库
git remote add origin https://gitee.com/xxx/vue-admin.git
​
# 6. 推送到远程
git push -u origin main

流程 2:团队日常功能开发标准流程

# 1. 同步主分支最新代码
git switch main
git pull origin main
​
# 2. 创建功能分支
git switch -c feat/user-list
​
# 3. 开发 & 多次提交
git add .
git commit -m "feat: 用户列表页面基础布局"
# ……继续开发,继续提交……
​
# 4. 推送功能分支到远程(给自己留个备份)
git push origin feat/user-list
​
# 5. 开发完成,合并到主分支
git switch main
git pull origin main
git merge feat/user-list
git push origin main
​
# 6. 清理已合并的分支
git branch -d feat/user-list
git push origin --delete feat/user-list

💡 老手习惯:第 4 步推送功能分支不是必须的,但强烈建议做——万一本机硬盘挂了,远程至少还有个备份。


十二、Git 命令速查表(建议截图保存 📸)

场景命令备注
初始化本地仓库git init新项目第一步
克隆远程项目git clone <url>接手别人的项目
查看文件变更状态git status --short开发中最常用
全部文件加入暂存git add .注意那个点号
提交版本git commit -m "说明"写清楚改了什么
修改上次提交备注git commit --amend -m "新说明"仅限未 push
查看提交记录git log --oneline精简版最实用
创建并切换分支git switch -c feat/xxx新功能开发
切回某个分支git switch main
合并分支git merge feat/xxx先切到目标分支再 merge
拉取远程最新代码git pull origin main每天开始工作先拉一次
推送当前分支git push首次需要 -u
储藏未完成代码git stash save "备注"紧急切分支时救命
恢复储藏的代码git stash pop恢复并删除记录
放弃本地修改git checkout -- .⚠️ 不可逆
取消暂存git reset HEAD .不影响文件内容
回退到上一版本git reset --hard HEAD~1⚠️ 清空未提交代码
软回退(保留修改)git reset --soft <id>安全的回退方式
打版本标签git tag -a v1.0.0 -m "说明"上线必备
推送标签git push origin v1.0.0标签需要单独推
忽略文件配置编辑 .gitignore项目初始化就做
查看远程仓库git remote -v
关联远程仓库git remote add origin <url>
rebase 整理历史git rebase main⚠️ 仅限私有分支

🚀 下一步学什么?

恭喜你看完这 30 个命令,日常开发场景基本够用了。如果你想继续进阶:

  1. Git 分支策略——了解 Git Flow、GitHub Flow,知道大团队怎么管理分支

  2. Rebase vs Merge 的选择——什么时候该 merge,什么时候该 rebase

  3. 交互式 Rebase(git rebase -i——把一堆零碎提交整理成漂亮的提交历史

  4. Git Hooks——在 commit 前自动跑代码检查、格式化

  5. 推荐工具:VSCode 的 GitLens 插件,能让你看到每一行代码是谁写的、什么时候改的,非常强大


❤️ 最后

Git 这东西,命令不难,难的是在对的场景用对的命令

这篇文章里的每一个命令,我都配了真实场景和踩坑提醒。建议你先收藏,遇到问题回来翻一翻,用几次就形成肌肉记忆了。

觉得有用的话,转发给你的同事朋友吧——独乐乐不如众乐乐 😄

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值