每个开发者都应该知道的20个Git命令
wptr33 2025-06-09 00:41 21 浏览
大多数开发者每天都会使用Git,但许多人只触及了它功能的皮毛。没错,我们都知道如何推送(push)、拉取(pull)和提交(commit),但那些能让你惊呼"等等,Git还能这么用?"的技巧呢?
掌握一些Git命令行技巧可能会彻底改变你的工作方式,让你在版本控制中更高效、更自信。
下面,我们就来深入探讨每个开发者工具包里都应该有的20个Git命令行技巧。
1. 交互式暂存(Interactive Add)
这个命令允许你只暂存文件中的部分更改,而不是整个文件。当你只想提交文件中的某些修改,而把其他部分留到以后处理时,这个功能非常实用。
使用方法:
git add -p
它的优势
你可以更精细地控制提交内容,非常适合进行小而专注的提交。
专业建议:
当你在同一个文件中开发多个功能,但又想分别提交时,就用这个功能!
---
2. 撤销最后一次提交(Undo the Last Commit)
最后一次提交出错了?别担心。这个命令可以撤销你最近的提交,但会保留工作目录中的更改,方便你修正问题。
使用方法:
git reset --soft HEAD~1
它的优势:
这就像给你的提交装上了时光机——既不会丢失辛苦修改的内容,又能轻松修正并重新提交。
专业建议:
如果想保留更改,使用 --soft 选项;如果想彻底撤销(包括本地修改),则使用 --hard。
3. 检查分支的远程跟踪状态(Check Your Branch's Upstream Status)
这条命令会从远程仓库获取所有更新,并自动清理(删除)远程已删除分支的本地引用。
使用方法:
git fetch --all --prune
它的优势:
它能自动保持本地环境整洁和同步,无需手动清理过期的分支。
专业建议:
建议定期运行此命令(尤其在大型团队协作时),避免分支列表杂乱无章。
4.快速修正提交
漏了文件或提交信息有错?git commit --amend 让你能修改最后一次提交,而无需创建新提交记录。
使用方法:
git commit --amend
它的优势:
你可以立即修正错误,而不会让提交历史变得杂乱。
专业建议:
这个功能非常适合修正小错误,避免在 Git 日志中留下不必要的提交记录。
5. 暂存你的工作(Stash Your Work)
需要切换分支但不想丢失当前的修改?暂存功能可以让你保存当前的工作进度,而无需提交,稍后再回来继续处理。
使用方法:
git stash
它的优势:
这就像给你的工作按下了"暂停键",同时保持提交历史的整洁。
专业建议:
使用 git stash save "描述性文字" 添加备注,方便后续快速识别不同的暂存内容。
6. 取出暂存内容(Pop Your Stash)
当需要恢复暂存的工作时,可以将其"弹出"到工作目录中。
使用方法:
git stash pop
7. 精选提交(Cherry-Picking Commits)
需要从其他分支提取特定提交?精选功能可将其应用到当前分支,而无需合并整个分支。
使用方法:
git cherry-pick <commit-hash>
优势:
灵活引入单个功能或修复,避免合并源分支的其他改动。
专业建议:
特别适合向后移植错误修复或小功能。
8. 清理本地分支
功能开发完成后,应及时清理旧分支。
使用方法:
git branch -d <branch-name>
优势:
保持分支列表清爽,专注重要内容。
专业建议:
强制删除未合并分支使用 -D 参数。
9. 查看文件历史
追踪特定文件的演变历程。
使用方法:
git log -- <file>
优势:
清晰了解协作项目中文件的变更原因。
专业建议:
添加 --stat 查看更详细的变更统计。
10. 代码溯源
定位代码行的修改者和时间。
使用方法:
git blame <filename>
优势:
快速定位问题代码的修改来源。
专业建议:
结合 git log -- <file> 获取完整修改历史。
11. 二分法查错
通过二分搜索快速定位问题提交。
使用方法:
bash
git bisect start
git bisect bad
git bisect good <older-commit-hash>
优势:
无需手动检查即可精确定位错误引入点。
专业建议:
适合复杂项目中难以定位的问题。
12. 终止合并
遇到合并冲突时可安全退出。
使用方法:
git merge --abort
优势:
一键回退到合并前状态。
专业建议:
合并前确保工作目录清洁。
13. 搜索提交信息
想快速找到特定提交?用 git log --grep 搜索提交信息内容。
使用方法:
git log --grep="搜索关键词"
为什么实用:
当你不记得完整提交哈希,只记得提交信息中的关键词时,这个命令能帮你闪电定位。
高手技巧:
配合 git log --author="开发者姓名" 可以精准筛选特定开发者的提交。
14. 标记重要提交
标签能帮你像书签一样标记Git历史中的关键节点(比如版本发布)。
使用方法:
git tag -a v1.0 -m "v1.0正式版"
核心价值:
为项目里程碑建立快照,后续随时一键回滚到指定版本
进阶技巧:
简单标记时直接用轻量标签:git tag v1.1(不加-m参数)
15. 彻底清理工作区
想快速清除所有未跟踪的文件和目录?这条命令能帮你一键清场,只保留受版本控制的文件。
强力清洁指令:
git clean -fd
核心优势:
- 瞬间清除工作区"垃圾文件"
- 保持开发环境清爽整洁
危险警告:
该操作不可逆!执行前请确认:
- 已备份重要文件
- 不需要保留任何未跟踪内容
16. 查看Git操作历史
当你把Git历史搞得一团糟时,git reflog就是你的救命稻草。它能完整记录仓库的所有操作轨迹,让你有机会找回丢失的修改。
操作指南:
bash
git reflog
三大神器特性:
- 记录所有Git操作的全量日志
- 支持检索被误删的提交记录
- 可撤销错误的reset/rebase操作
最佳实践:
- 误操作后第一时间执行
- 结合git cherry-pick恢复特定提交
- 定期检查确保关键操作可追溯
17. 提交合并术
想要在推送前整理凌乱的提交记录?「压缩提交」能将多个提交合并为一个,打造清爽的版本历史。
操作秘笈:
git rebase -i HEAD~<提交数量>
三大妙用:
历史美化:将零散提交合并为逻辑完整的单元
团队协作:让代码审查更聚焦核心改动
版本清晰:避免"修复拼写错误"这类琐碎提交污染历史
18. 优雅撤销提交
想要撤销某个特定提交又不想重写历史?git revert会创建一个新的提交来抵消指定提交的改动,完美实现"时光倒流"。
撤销命令:
git revert <提交哈希>
核心优势:
安全无忧 - 不会改写现有提交历史
精准定位 - 只撤销目标提交的改动
团队友好 - 适合共享仓库的修改回退
19. 分支可视化图谱
这个命令能生成分支历史的图形化视图,让合并关系、分支走向和提交记录一目了然。
可视化命令:
bash
git log --graph --oneline --all
核心优势:
树状结构清晰展示项目演进脉络
直观呈现复杂分支的合并关系
快速掌握项目整体开发现状
适用场景:
- 接手遗留项目时理清开发历史
- 解决合并冲突前分析分支差异
- 向团队演示功能开发流程
20. 智能命令补全
告别冗长的命令输入,启用Git自动补全功能,轻松按Tab键即可完成命令。
使用方式:
输入命令开头后直接按[TAB]键
效率提升:
减少70%的命令输入时间
避免拼写错误导致的执行失败
无需死记硬背复杂命令格式
相关推荐
- MySQL进阶五之自动读写分离mysql-proxy
-
自动读写分离目前,大量现网用户的业务场景中存在读多写少、业务负载无法预测等情况,在有大量读请求的应用场景下,单个实例可能无法承受读取压力,甚至会对业务产生影响。为了实现读取能力的弹性扩展,分担数据库压...
- 3分钟短文 | Laravel SQL筛选两个日期之间的记录,怎么写?
-
引言今天说一个细分的需求,在模型中,或者使用laravel提供的EloquentORM功能,构造查询语句时,返回位于两个指定的日期之间的条目。应该怎么写?本文通过几个例子,为大家梳理一下。学习时...
- 一文由浅入深带你完全掌握MySQL的锁机制原理与应用
-
本文将跟大家聊聊InnoDB的锁。本文比较长,包括一条SQL是如何加锁的,一些加锁规则、如何分析和解决死锁问题等内容,建议耐心读完,肯定对大家有帮助的。为什么需要加锁呢?...
- 验证Mysql中联合索引的最左匹配原则
-
后端面试中一定是必问mysql的,在以往的面试中好几个面试官都反馈我Mysql基础不行,今天来着重复习一下自己的弱点知识。在Mysql调优中索引优化又是非常重要的方法,不管公司的大小只要后端项目中用到...
- MySQL索引解析(联合索引/最左前缀/覆盖索引/索引下推)
-
目录1.索引基础...
- 你会看 MySQL 的执行计划(EXPLAIN)吗?
-
SQL执行太慢怎么办?我们通常会使用EXPLAIN命令来查看SQL的执行计划,然后根据执行计划找出问题所在并进行优化。用法简介...
- MySQL 从入门到精通(四)之索引结构
-
索引概述索引(index),是帮助MySQL高效获取数据的数据结构(有序),在数据之外,数据库系统还维护者满足特定查询算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构...
- mysql总结——面试中最常问到的知识点
-
mysql作为开源数据库中的榜一大哥,一直是面试官们考察的重中之重。今天,我们来总结一下mysql的知识点,供大家复习参照,看完这些知识点,再加上一些边角细节,基本上能够应付大多mysql相关面试了(...
- mysql总结——面试中最常问到的知识点(2)
-
首先我们回顾一下上篇内容,主要复习了索引,事务,锁,以及SQL优化的工具。本篇文章接着写后面的内容。性能优化索引优化,SQL中索引的相关优化主要有以下几个方面:最好是全匹配。如果是联合索引的话,遵循最...
- MySQL基础全知全解!超详细无废话!轻松上手~
-
本期内容提醒:全篇2300+字,篇幅较长,可搭配饭菜一同“食”用,全篇无废话(除了这句),干货满满,可收藏供后期反复观看。注:MySQL中语法不区分大小写,本篇中...
- 深入剖析 MySQL 中的锁机制原理_mysql 锁详解
-
在互联网软件开发领域,MySQL作为一款广泛应用的关系型数据库管理系统,其锁机制在保障数据一致性和实现并发控制方面扮演着举足轻重的角色。对于互联网软件开发人员而言,深入理解MySQL的锁机制原理...
- Java 与 MySQL 性能优化:MySQL分区表设计与性能优化全解析
-
引言在数据库管理领域,随着数据量的不断增长,如何高效地管理和操作数据成为了一个关键问题。MySQL分区表作为一种有效的数据管理技术,能够将大型表划分为多个更小、更易管理的分区,从而提升数据库的性能和可...
- MySQL基础篇:DQL数据查询操作_mysql 查
-
一、基础查询DQL基础查询语法SELECT字段列表FROM表名列表WHERE条件列表GROUPBY分组字段列表HAVING分组后条件列表ORDERBY排序字段列表LIMIT...
- MySql:索引的基本使用_mysql索引的使用和原理
-
一、索引基础概念1.什么是索引?索引是数据库表的特殊数据结构(通常是B+树),用于...
- 一周热门
-
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
程序员的开源月刊《HelloGitHub》第 71 期
-
详细介绍一下Redis的Watch机制,可以利用Watch机制来做什么?
-
假如有100W个用户抢一张票,除了负载均衡办法,怎么支持高并发?
-
如何将AI助手接入微信(打开ai手机助手)
-
Java面试必考问题:什么是乐观锁与悲观锁
-
redission YYDS spring boot redission 使用
-
SparkSQL——DataFrame的创建与使用
-
一文带你了解Redis与Memcached? redis与memcached的区别
-
如何利用Redis进行事务处理呢? 如何利用redis进行事务处理呢英文
-
- 最近发表
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)
- c语言 switch (34)
- git commit (34)