Git 日常开发常用命令全攻略:从入门到实战
一份覆盖日常开发 90% 场景的 Git 命令速查手册前言对于每一位开发者来说Git 是必备的生存技能。无论是个人项目的版本管理还是团队多人协同开发Git 都是行业统一的标准工具。很多新手只会简单的add、commit、push遇到代码冲突、版本回退、分支合并等问题时就束手无策。本文将从实战角度出发系统梳理日常开发中最常用的 Git 命令按场景分类附带实际示例帮你快速上手并随时查阅。一、Git 核心概念速览在开始敲命令之前先理解 Git 的四大工作区域区域说明工作区本地文件夹我们写代码的地方暂存区临时存放修改等待提交也叫 Index本地仓库本地永久保存所有版本记录远程仓库GitHub / Gitee / GitLab 上的云端仓库代码流转顺序工作区 → 暂存区 → 本地仓库 → 远程仓库二、初次使用安装与配置2.1 安装 Git官网下载对应系统版本默认安装即可https://git-scm.com/安装完成后验证git --version2.2 配置用户信息必须配置Git 需要知道你是谁每次提交都会记录这些信息# 全局配置所有项目生效 git config --global user.name 你的名字 git config --global user.email 你的邮箱 # 查看所有配置 git config --list建议邮箱与 GitHub/GitLab 账号一致以便提交记录正确关联。2.3 配置 SSH 密钥免密推送ssh-keygen -t ed25519 -C 你的邮箱一路回车然后在~/.ssh/目录找到id_ed25519.pub复制公钥内容配置到远程仓库。三、仓库操作初始化与克隆3.1 初始化新仓库# 在当前目录初始化 Git 仓库 git init执行后会在当前目录创建.git文件夹Git 开始跟踪该目录下的文件。3.2 克隆远程仓库# 克隆远程仓库到本地 git clone 仓库地址 # 浅克隆仅拉取最近一次提交加快速度 git clone 仓库地址 --depth1[reference:11]四、日常开发核心四步曲这是每天使用频率最高的四个命令4.1 查看状态 —git status# 查看工作区和暂存区状态 git status # 简洁模式 git status -s[reference:13]红色 未暂存绿色 已暂存。这是提交前必看的命令。4.2 添加文件到暂存区 —git add# 添加指定文件 git add 文件名 # 添加所有变更新文件 修改 git add . # 只添加已被跟踪的文件的修改/删除不包括新文件 git add -u # 添加所有变更等同于 git add . git add -u git add -A[reference:16]4.3 提交到本地仓库 —git commit# 提交并添加说明 git commit -m 本次修改的说明 # 修改上一次提交漏文件或写错消息时使用 git commit --amend[reference:17]提交信息规范建议使用动词开头如fix、add、update、refactor简洁明确。4.4 推送到远程仓库 —git push# 推送到远程仓库的指定分支 git push origin main # 第一次推送时设置上游分支之后可直接用 git push git push -u origin feature/login[reference:19] # 强制推送慎用建议使用 --force-with-lease 更安全 git push --force-with-lease[reference:20]五、查看历史与差异5.1 查看提交历史 —git log# 查看完整提交历史 git log # 简洁模式每条一行 git log --oneline # 图形化展示分支合并历史 git log --graph[reference:21] # 查看某人的提交记录 git log --author用户名 # 查看某个文件的详细修改内容 git log -p 文件5.2 查看差异 —git diff# 查看工作区未暂存的更改 git diff # 查看暂存区的更改 git diff --staged[reference:22]六、分支管理分支是 Git 最强大的功能之一可以让开发工作互不影响。6.1 查看与创建分支# 列出所有本地分支* 表示当前分支 git branch # 创建新分支 git branch 分支名 # 创建并切换到新分支推荐 git checkout -b 分支名 # 或使用新命令Git 2.23 git switch -c 分支名[reference:24]6.2 切换分支# 老命令 git checkout 分支名 # 新命令推荐语义更清晰 git switch 分支名[reference:25]6.3 合并分支# 将指定分支合并到当前分支 git merge 分支名[reference:26]合并前先确保当前分支是目标分支如main再执行合并。6.4 删除分支# 删除已合并的分支 git branch -d 分支名 # 强制删除分支未合并也能删 git branch -D 分支名[reference:28] # 删除远程分支 git push origin --delete 分支名[reference:29]七、远程仓库操作7.1 查看与添加远程仓库# 查看远程仓库地址 git remote -v # 添加远程仓库 git remote add origin 仓库地址 # 删除远程仓库连接 git remote remove origin[reference:30]7.2 拉取更新# 拉取远程更新并自动合并等价于 git fetch git merge git pull origin main # 获取远程更新但不合并先查看差异再决定 git fetch[reference:31] # 推荐保持线性历史的拉取方式 git pull --rebase[reference:32]⚠️注意git pull可能触发自动合并若存在冲突需手动解决。八、撤销与回退“后悔药”功能8.1 撤销工作区修改# 撤销对工作区文件的修改未 add 之前 git checkout -- 文件 # 或使用新命令 git restore 文件[reference:34]8.2 撤销暂存区# 将文件从暂存区移回工作区 git reset HEAD 文件 # 或使用新命令 git restore --staged 文件[reference:35]8.3 版本回退# 回退到某提交保留所有改动工作区 暂存区 git reset --soft commit-id # 回退并清除暂存区但保留工作区改动 git reset --mixed commit-id # 回退并清除所有改动危险慎用 git reset --hard commit-id[reference:36] # 安全回退生成一个新提交来撤销某次提交不破坏历史 git revert commit-id[reference:37]⚠️团队协作中优先使用git revert避免使用git reset --hard因为后者会改写历史。九、临时保存Stash神技当需要临时切换分支但当前修改还没完成时# 暂存当前所有未提交的修改 git stash # 查看所有暂存记录 git stash list # 恢复最近一次 stash不删除记录 git stash apply # 恢复并删除最近一次 stash git stash pop # 删除最近一次 stash git stash drop[reference:39]十、标签管理用于标记重要的版本如 v1.0、v2.0# 查看所有标签 git tag # 创建标签 git tag 标签名 # 删除标签 git tag -d 标签名 # 推送指定标签到远程 git push origin 标签名 # 推送所有标签 git push origin --tags[reference:40]十一、常用命令速查表场景命令说明初始化git init初始化 Git 仓库克隆git clone url克隆远程仓库查看状态git status查看文件状态添加git add .添加所有变更到暂存区提交git commit -m msg提交到本地仓库推送git push origin main推送到远程拉取git pull拉取并合并远程更新获取git fetch获取远程更新但不合并查看日志git log --oneline简洁查看提交历史查看差异git diff查看未暂存的更改创建分支git checkout -b name创建并切换分支切换分支git switch name切换分支合并分支git merge name合并分支到当前删除分支git branch -d name删除已合并的分支暂存修改git stash临时保存当前修改恢复暂存git stash pop恢复并删除 stash撤销文件git restore file撤销工作区修改安全回退git revert hash生成新提交撤销某次提交查看配置git config --list查看所有 Git 配置十二、常见问题与避坑指南12.1 提交信息写错了怎么办git commit --amend -m 新的提交信息12.2 不小心 add 了不该 add 的文件git restore --staged 文件名12.3 代码冲突了怎么办手动打开冲突文件解决冲突内容git add 解决后的文件git commit -m 解决冲突git push12.4 想回到某个历史版本看看# 先查看历史找到 commit-id git log --oneline # 临时切换到该版本不会丢失当前修改 git checkout commit-id # 回到最新版本 git switch main12.5 忘记拉取最新代码就提交了git pull --rebase # 如果有冲突解决后继续 git add . git rebase --continue git push写在最后Git 的命令虽多但日常开发中高频使用的其实只有 20 条左右。建议把这篇文章收藏起来遇到不确定的命令随时查阅。用得多了这些命令自然会刻在肌肉记忆里。记住核心口诀先 status 看状态 → add 到暂存区 → commit 到本地 → push 到远程。本文命令均基于 Git 主流版本测试建议将 Git 更新到 2.23 版本以使用switch和restore等新命令。

相关新闻

嵌入式多核通信实战:硬件Mailbox原理、中断与轮询模式详解

嵌入式多核通信实战:硬件Mailbox原理、中断与轮询模式详解

1. 从硬件邮箱到高效IPC:嵌入式多核通信的实战基石在嵌入式多核处理器的世界里,不同处理器核心(比如Cortex-A系列的应用处理器和Cortex-M系列的实时协处理器)或者同一个核心上运行的不同任务之间,如何安全、高效地“对…

2026/7/22 6:30:13 阅读更多 →
C++日期类实现:运算符重载与面向对象编程实践

C++日期类实现:运算符重载与面向对象编程实践

1. 项目概述&#xff1a;为什么我们需要一个“日期类”&#xff1f;在C的日常开发中&#xff0c;处理日期和时间是绕不开的坎。无论是记录日志、计算任务周期&#xff0c;还是处理用户输入的生辰八字&#xff0c;你总得和年月日打交道。系统自带的<ctime>库用起来总感觉隔…

2026/7/22 6:30:13 阅读更多 →
Starling项目解析:分布式消息队列设计精髓

Starling项目解析:分布式消息队列设计精髓

1. 从Starling项目看分布式系统设计精髓最近花了三周时间完整研读了Starling项目的技术文档与源码实现&#xff0c;这个由Twitter团队开发的轻量级消息队列系统&#xff0c;让我对分布式系统设计有了全新的认知。Starling虽然已不再维护&#xff0c;但其设计理念至今仍值得分布…

2026/7/22 6:30:13 阅读更多 →

最新新闻

EMCCD在冷原子成像中遇到瓶颈了吗?

EMCCD在冷原子成像中遇到瓶颈了吗?

单原子成像实验同时面临极弱荧光信号和多原子空间分辨与并行读取的挑战。在典型实验条件下&#xff0c;单原子最终进入探测系统的有效光子数通常仅约10光子/毫秒/原子&#xff0c;对探测器的弱光灵敏度提出了极高要求。 EMCCD通过片上电子倍增寄存器&#xff0c;在信号读出前对…

2026/7/22 7:15:32 阅读更多 →
国家中小学智慧教育平台电子课本下载终极指南:5分钟掌握免费离线学习方案

国家中小学智慧教育平台电子课本下载终极指南:5分钟掌握免费离线学习方案

国家中小学智慧教育平台电子课本下载终极指南&#xff1a;5分钟掌握免费离线学习方案 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具&#xff0c;帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载&#xff0c;让您更方便地获取课本…

2026/7/22 7:15:32 阅读更多 →
FreeCAD参数化建模入门:从草图到装配的实战指南

FreeCAD参数化建模入门:从草图到装配的实战指南

1. FreeCAD 到底适合谁用&#xff1f;先看它能解决什么实际问题FreeCAD 是一个开源的参数化 3D 建模工具&#xff0c;最核心的特点是“参数化”和“多平台免费”。如果你需要设计机械零件、家具结构、建筑构件&#xff0c;或者准备做 3D 打印模型&#xff0c;但又不想被商业软件…

2026/7/22 7:15:32 阅读更多 →
PPA方法:提升大语言模型输出稳定性的分区提示聚合技术

PPA方法:提升大语言模型输出稳定性的分区提示聚合技术

在大语言模型&#xff08;LLM&#xff09;应用日益广泛的今天&#xff0c;一个核心痛点始终困扰着开发者&#xff1a;如何让模型的输出更加稳定可靠&#xff1f;你或许遇到过这种情况——同一个问题&#xff0c;模型第一次回答得头头是道&#xff0c;第二次却漏洞百出&#xff…

2026/7/22 7:15:32 阅读更多 →
C++面向对象编程实践:从零实现中国象棋游戏项目

C++面向对象编程实践:从零实现中国象棋游戏项目

1. 项目概述与核心价值最近在整理自己的代码仓库&#xff0c;翻到了一个大学时期写的中国象棋项目&#xff0c;当时为了完成课程设计和锻炼C面向对象编程能力&#xff0c;前后折腾了小一个月。现在回头看&#xff0c;这个项目虽然代码风格略显稚嫩&#xff0c;但麻雀虽小五脏俱…

2026/7/22 7:15:32 阅读更多 →
C++构造与析构异常处理:RAII机制与noexcept最佳实践

C++构造与析构异常处理:RAII机制与noexcept最佳实践

1. 项目概述&#xff1a;为什么C的构造与析构异常如此棘手&#xff1f;在C的世界里&#xff0c;异常处理机制是构建健壮、容错性高软件的重要基石。然而&#xff0c;当异常与对象的“生”&#xff08;构造函数&#xff09;和“死”&#xff08;析构函数&#xff09;交织在一起时…

2026/7/22 7:14:32 阅读更多 →

日新闻

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

1. 项目概述与SYSCFG模块的核心价值在嵌入式系统&#xff0c;尤其是像TI C6000系列这样的高性能DSP开发中&#xff0c;我们常常会与芯片手册里那些密密麻麻的寄存器打交道。很多开发者可能更关注算法实现、内存优化或者外设驱动&#xff0c;但对于一个稳定、高效的系统而言&…

2026/7/22 0:00:26 阅读更多 →
微信Server酱:高到达率的应急通知方案实践

微信Server酱:高到达率的应急通知方案实践

1. 为什么我们需要"最次"的通知方案&#xff1f; 在数字化协作环境中&#xff0c;消息通知系统的重要性不言而喻明。但现实情况是&#xff0c;企业级通知方案往往需要复杂的API对接&#xff08;如企业微信、钉钉、飞书&#xff09;&#xff0c;个人开发者的小项目又经…

2026/7/22 0:00:26 阅读更多 →
甲方要的“简洁“PPT,到底是简洁还是省事?

甲方要的“简洁“PPT,到底是简洁还是省事?

甲方说"简洁一点"&#xff0c;乙方听到的是"少做几页"。甲方说"不要太复杂"&#xff0c;乙方理解成"别放图表了"。结果交过去&#xff0c;甲方说"我说的简洁不是这个意思"。"简洁"这个词在PPT语境里&#xff0c;是…

2026/7/22 0:00:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中&#xff0c;我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源&#xff0c;还是配置文件、证书等&#xff0c;都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下&#xff0c;但这…

2026/7/21 8:48:31 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP&#xff08;轻量级目录访问协议&#xff09;作为企业级身份认证的黄金标准&#xff0c;已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时&#xff0c;发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 5:34:47 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”&#xff0c;而是以可解释、可审计、可迭代的方式&#xff0c;赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/21 8:25:39 阅读更多 →

月新闻