Git 常用命令全总结|从入门到进阶,一篇搞定开发所有场景
作为开发者Git 是日常工作中必不可少的版本控制工具。不管是单人开发还是团队协作熟练掌握 Git 命令都能大幅提升工作效率避免版本冲突、代码丢失等问题。本文将按使用场景分类总结 Git 核心命令、进阶命令及避坑技巧新手可入门老手可速查。一、仓库初始化与远程仓库关联基础入门这部分是 Git 操作的起点主要用于新建仓库、关联远程仓库适用于项目初始化阶段。1. 本地仓库初始化git init在当前目录创建一个新的 Git 仓库生成隐藏的 .git 文件夹包含版本控制所需的所有文件。示例打开项目文件夹执行git init即可将当前目录变为 Git 可管理的仓库。注意一个项目只需要初始化一次重复执行不会覆盖现有仓库只会更新 .git 文件夹。2. 克隆远程仓库git clone 远程仓库URL将远程仓库完整克隆到本地包括所有分支、提交历史和文件。常用示例- 基础克隆git clone https://github.com/username/project.git- 克隆到指定文件夹git clone https://github.com/username/project.git my-project- 克隆指定分支git clone -b dev https://github.com/username/project.git直接克隆 dev 分支避免默认克隆主分支3. 关联远程仓库本地仓库初始化后需关联远程仓库才能实现代码推送和拉取常用命令如下-git remote add 远程仓库别名 远程仓库URL为本地仓库添加远程仓库关联别名通常设为 origin默认。示例git remote add origin https://github.com/username/project.git-git remote -v查看本地已关联的远程仓库信息包括别名和对应的 URL。-git remote rm 远程仓库别名删除指定的远程仓库关联。示例git remote rm origin取消本地与 origin 远程仓库的关联二、日常开发核心命令高频使用这部分命令是日常开发中使用频率最高的涵盖文件状态查看、暂存、提交、拉取、推送等基础操作。1. 查看文件状态git status查看当前工作区、暂存区的文件状态包括已修改、已暂存、未跟踪、已忽略的文件。这是排查问题的第一步每次提交代码前建议先执行该命令确认文件状态无误。执行后会清晰显示哪些文件需要暂存哪些文件有未提交的修改。2. 暂存文件工作区 → 暂存区Git 的版本控制分为工作区、暂存区、版本库三个区域暂存文件是提交前的必要步骤。-git add 文件路径将指定文件从工作区添加到暂存区准备提交。示例git add index.html暂存单个文件、git add src/暂存整个 src 文件夹-git add .将工作区所有已修改、未跟踪的文件除了 .gitignore 忽略的文件全部添加到暂存区适合一次性暂存多个文件。-git add --all与 git add . 功能类似但会包含已删除的文件建议优先使用。3. 提交文件暂存区 → 版本库提交是将暂存区的文件保存到版本库生成新的提交记录每个提交都有唯一的 commit ID用于版本回溯。-git commit -m 提交说明将暂存区的文件提交到版本库-m 后面跟提交说明必须清晰描述本次提交的内容如“修复登录页样式问题”“新增用户列表功能”。示例git commit -m 新增首页轮播图功能-git commit -am 提交说明跳过暂存步骤直接将工作区已跟踪的文件已提交过的文件提交到版本库适合快速提交修改未跟踪的文件无法用该命令提交。示例git commit -am 修改首页标题文案-git commit --amend修改最近一次的提交说明或补充暂存的文件到最近一次提交避免生成多余的提交记录。示例执行git commit --amend -m 修改首页标题文案补充说明即可替换最近一次的提交说明。4. 拉取远程代码远程 → 本地团队协作时需定期拉取远程仓库的最新代码避免与他人代码冲突。-git pull 远程仓库别名 远程分支名从远程仓库拉取指定分支的最新代码并合并到本地当前分支。示例git pull origin main拉取远程 main 分支的最新代码并合并到本地 main 分支-git pull --rebase 远程仓库别名 远程分支名拉取远程代码并以变基的方式合并避免生成多余的合并提交记录让提交历史更整洁。示例git pull --rebase origin dev5. 推送本地代码本地 → 远程本地提交后需将代码推送到远程仓库供团队成员查看和使用。-git push 远程仓库别名 本地分支名将本地指定分支的提交推送到远程仓库对应的分支。示例git push origin main将本地 main 分支的提交推送到远程 main 分支-git push -u 远程仓库别名 本地分支名首次推送时使用-u 表示关联本地分支和远程分支后续推送可直接执行git push无需指定别名和分支。示例git push -u origin dev首次推送 dev 分支关联远程 dev 分支-git push --force强制推送本地代码到远程仓库覆盖远程仓库的提交记录谨慎使用团队协作中容易覆盖他人代码仅在本地修改提交历史后使用。三、分支管理命令团队协作核心分支是 Git 的核心优势之一用于实现并行开发、功能开发、bug 修复等场景避免影响主分支代码。常用分支管理命令如下1. 查看分支-git branch查看本地所有分支当前所在分支前会有 * 标记。-git branch -r查看远程所有分支。-git branch -a查看本地和远程所有分支。-git branch -v查看本地分支的最新提交记录和提交说明。2. 创建分支-git branch 分支名基于当前分支创建一个新的本地分支创建后仍停留在当前分支。示例git branch feature/login基于当前分支创建 feature/login 功能分支-git checkout -b 分支名创建新分支并立即切换到该分支是日常开发中最常用的创建分支方式。示例git checkout -b bugfix/order创建 bugfix/order 修复分支并切换到该分支-git checkout -b 本地分支名 远程仓库别名/远程分支名基于远程分支创建本地分支并关联远程分支。示例git checkout -b dev origin/dev基于远程 dev 分支创建本地 dev 分支并关联3. 切换分支-git checkout 分支名切换到指定本地分支。示例git checkout main切换到 main 分支-git switch 分支名Git 2.23 版本新增命令功能与 git checkout 一致更直观用于切换分支。示例git switch dev切换到 dev 分支4. 合并分支将一个分支的代码合并到当前分支常用于功能开发完成后合并到主分支或 bug 修复完成后合并到开发分支。-git merge 分支名将指定分支的代码合并到当前分支默认生成合并提交记录。示例切换到 main 分支后执行git merge feature/login将 feature/login 分支的代码合并到 main 分支注意合并前需确保当前分支和待合并分支都已拉取最新代码避免冲突。若出现冲突需先解决冲突再提交合并。-git rebase 分支名以变基的方式合并指定分支的代码到当前分支与 merge 不同rebase 会将当前分支的提交记录“移到”待合并分支的最新提交之后让提交历史更线性、整洁。示例切换到 feature/login 分支后执行git rebase main将 main 分支的最新代码合并到 feature/login 分支以变基方式5. 删除分支分支开发完成、合并后可删除多余分支保持仓库整洁。-git branch -d 分支名删除指定本地分支前提是该分支的代码已合并到其他分支未合并则无法删除。示例git branch -d feature/login删除 feature/login 本地分支-git branch -D 分支名强制删除指定本地分支即使该分支代码未合并谨慎使用避免代码丢失。-git push 远程仓库别名 --delete 远程分支名删除远程仓库的指定分支。示例git push origin --delete feature/login删除远程 origin 仓库的 feature/login 分支四、撤销与回退命令避坑必备开发中难免会出现错误提交、误修改文件等情况掌握撤销与回退命令可快速恢复代码减少损失。1. 撤销工作区修改git restore 文件路径撤销工作区指定文件的修改恢复到最近一次提交或暂存的状态Git 2.23 版本新增替代旧命令 git checkout -- 文件路径。示例git restore index.html撤销 index.html 文件的工作区修改旧命令git checkout -- index.html功能一致建议使用新命令2. 撤销暂存区修改暂存区 → 工作区git restore --staged 文件路径将指定文件从暂存区撤销到工作区保留工作区的修改Git 2.23 版本新增替代旧命令 git reset HEAD 文件路径。示例git restore --staged index.html将 index.html 从暂存区撤销到工作区旧命令git reset HEAD index.html功能一致建议使用新命令3. 版本回退回退到指定的提交版本适用于错误提交后恢复代码常用三种参数--soft、--mixed、--hard。-git reset --soft commit ID回退到指定提交版本保留工作区和暂存区的修改仅撤销提交记录适合重新提交。示例git reset --soft 1a2b3c4回退到 commit ID 为 1a2b3c4 的版本保留修改-git reset --mixed commit ID默认参数回退到指定提交版本保留工作区修改撤销暂存区和提交记录适合重新暂存、提交。示例git reset --mixed 1a2b3c4可简写为 git reset 1a2b3c4-git reset --hard commit ID强制回退到指定提交版本撤销工作区、暂存区和提交记录的所有修改恢复到指定版本的状态谨慎使用会丢失未提交的修改无法恢复。示例git reset --hard 1a2b3c4注意回退远程分支的提交记录需配合git push --force强制推送但团队协作中需提前告知成员避免覆盖他人代码。4. 撤销已推送的提交若已将错误提交推送到远程仓库可使用git revert commit ID撤销指定提交该命令会生成一个新的提交记录保留原提交历史比 reset 更安全适合团队协作场景。示例git revert 1a2b3c4撤销 commit ID 为 1a2b3c4 的提交生成新的提交记录五、进阶命令提升效率这部分命令不常用但在特定场景下能大幅提升效率适合有一定基础的开发者掌握。1. 暂存工作进度git stash适用于当前分支工作未完成需要切换到其他分支处理紧急任务的场景可暂存当前工作区的修改切换分支后再恢复。-git stash暂存当前工作区的所有修改保存为一个临时记录。-git stash save 暂存说明暂存时添加说明方便后续识别。示例git stash save 未完成的首页轮播图修改-git stash list查看所有暂存的记录。-git stash pop恢复最近一次的暂存记录并删除该暂存记录。-git stash apply 暂存记录编号恢复指定的暂存记录不删除暂存记录编号可通过 git stash list 查看。示例git stash apply stash{0}恢复第一条暂存记录-git stash drop 暂存记录编号删除指定的暂存记录。-git stash clear删除所有暂存记录。2. 查看提交历史-git log查看本地分支的提交历史按时间倒序排列显示 commit ID、提交人、提交时间、提交说明。-git log --oneline简洁显示提交历史一行一个提交只显示 commit ID前7位和提交说明便于快速查看。-git log --graph以图形化方式显示提交历史清晰展示分支合并、变基的过程。-git log --author用户名查看指定用户的提交历史。示例git log --authorzhangsan查看张三的所有提交-git log --since2026-01-01查看指定日期之后的提交历史。3. 拣选提交git cherry-pick将其他分支的指定提交记录复制到当前分支适用于将 bug 修复提交复制到多个分支避免重复开发。示例git cherry-pick 1a2b3c4将 commit ID 为 1a2b3c4 的提交复制到当前分支4. 子模块管理git submodule适用于项目中引用其他 Git 仓库如公共组件库的场景可将其他仓库作为子模块嵌入当前项目。-git submodule add 远程仓库URL 本地路径添加子模块。示例git submodule add https://github.com/username/common-components.git src/components/common-git submodule init初始化子模块克隆项目后首次使用子模块时执行。-git submodule update拉取子模块的最新代码。-git clone --recurse-submodules 远程仓库URL克隆包含子模块的项目时同时拉取子模块的代码。六、常用配置与避坑技巧1. 基础配置首次使用 Git 时需配置用户名和邮箱用于标识提交人信息。- 全局配置所有项目生效git config --global user.name 你的用户名git config --global user.email 你的邮箱- 局部配置仅当前项目生效进入项目目录后执行上述命令去掉 --global 参数即可。- 查看配置git config --list查看所有 Git 配置2. 避坑技巧1. 提交说明要清晰避免使用“修复bug”“修改代码”等模糊描述应明确说明修改内容和原因便于后续追溯。2. 避免强制推送团队协作中非必要不使用git push --force若必须使用需提前告知团队成员避免覆盖他人代码。3. 处理冲突要谨慎合并分支或拉取代码时出现冲突需仔细对比冲突代码保留正确内容删除冲突标记、、再提交合并。4. 定期拉取远程代码团队协作中每天开发前先执行git pull拉取远程最新代码减少冲突概率。5. 分支命名规范建议采用“功能类型/功能名称”的命名方式如 feature/login功能分支、bugfix/orderbug修复分支、release/v1.0发布分支便于团队识别分支用途。七、总结本文总结了 Git 从入门到进阶的常用命令按使用场景分类结合示例和注意事项覆盖了仓库初始化、日常开发、分支管理、撤销回退、进阶操作等所有核心场景。对于新手来说建议先掌握日常开发核心命令和基础分支管理命令再逐步学习进阶命令对于老手来说可将本文作为速查手册遇到问题快速查阅。Git 的核心是版本控制熟练掌握命令的同时更要理解其工作原理工作区、暂存区、版本库的关系才能灵活应对各种开发场景避免不必要的错误。希望本文能帮助大家提升 Git 使用效率让版本控制成为开发的助力而非负担。最后建议大家在实际开发中多实践遇到问题多查阅官方文档或本文逐步形成自己的 Git 使用习惯。如果有遗漏的常用命令欢迎在评论区补充交流~

相关新闻

synchronize

synchronize

synchronize 模块是 Ansible 中对 rsync 工具的一个封装。它主要用于在控制节点和远程主机之间高效地同步文件和目录。 它利用 rsync 的增量传输算法,同步时只传输发生变化的部分,因此在处理大量文件或大文件时,效率远超 copy 等模块 参数&am…

2026/10/22 22:48:16 阅读更多 →
Service 业务实现层 ChatServiceImpl

Service 业务实现层 ChatServiceImpl

核心业务处理,包含会话防并发创建、消息事务入库、WebSocket推送、离线消息补发、批量已读标记。 package com.para.system.chat.service.impl; import com.para.common.utils.SecurityUtils; import com.para.system.chat.domain.ChatMessage; import com.para.sys…

2026/10/17 2:02:04 阅读更多 →
【讯飞AI开发者大赛_学习笔记】

【讯飞AI开发者大赛_学习笔记】

2026/10/18 22:54:30 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/22 10:18:38 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/22 11:01:53 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/22 9:44:47 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/22 10:42:00 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/22 10:40:08 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/22 10:56:37 阅读更多 →

日新闻

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/22 1:47:45 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/22 21:33:42 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/22 5:12:39 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/22 22:56:44 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/22 22:56:12 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/22 19:06:46 阅读更多 →