百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

每个开发者都应该知道的20个Git命令

wptr33 2025-06-09 00:41 17 浏览

大多数开发者每天都会使用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

核心优势

  • 瞬间清除工作区"垃圾文件"
  • 保持开发环境清爽整洁

危险警告
该操作不可逆!执行前请确认:

  1. 已备份重要文件
  2. 不需要保留任何未跟踪内容

16. 查看Git操作历史

当你把Git历史搞得一团糟时,git reflog就是你的救命稻草。它能完整记录仓库的所有操作轨迹,让你有机会找回丢失的修改。

操作指南

bash

git reflog

三大神器特性

  1. 记录所有Git操作的全量日志
  2. 支持检索被误删的提交记录
  3. 可撤销错误的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%的命令输入时间
避免拼写错误导致的执行失败
无需死记硬背复杂命令格式

相关推荐

redis的八种使用场景

前言:redis是我们工作开发中,经常要打交道的,下面对redis的使用场景做总结介绍也是对redis举报的功能做梳理。缓存Redis最常见的用途是作为缓存,用于加速应用程序的响应速度。...

基于Redis的3种分布式ID生成策略

在分布式系统设计中,全局唯一ID是一个基础而关键的组件。随着业务规模扩大和系统架构向微服务演进,传统的单机自增ID已无法满足需求。高并发、高可用的分布式ID生成方案成为构建可靠分布式系统的必要条件。R...

基于OpenWrt系统路由器的模式切换与网页设计

摘要:目前商用WiFi路由器已应用到多个领域,商家通过给用户提供一个稳定免费WiFi热点达到吸引客户、提升服务的目标。传统路由器自带的Luci界面提供了工厂模式的Web界面,用户可通过该界面配置路...

这篇文章教你看明白 nginx-ingress 控制器

主机nginx一般nginx做主机反向代理(网关)有以下配置...

如何用redis实现注册中心

一句话总结使用Redis实现注册中心:服务注册...

爱可可老师24小时热门分享(2020.5.10)

No1.看自己以前写的代码是种什么体验?No2.DooM-chip!国外网友SylvainLefebvre自制的无CPU、无操作码、无指令计数器...No3.我认为CS学位可以更好,如...

Apportable:拯救程序员,IOS一秒变安卓

摘要:还在为了跨平台使用cocos2d-x吗,拯救objc程序员的奇葩来了,ApportableSDK:FreeAndroidsupportforcocos2d-iPhone。App...

JAVA实现超买超卖方案汇总,那个最适合你,一篇文章彻底讲透

以下是几种Java实现超买超卖问题的核心解决方案及代码示例,针对高并发场景下的库存扣减问题:方案一:Redis原子操作+Lua脚本(推荐)//使用Redis+Lua保证原子性publicbo...

3月26日更新 快速施法自动施法可独立设置

2016年3月26日DOTA2有一个79.6MB的更新主要是针对自动施法和快速施法的调整本来内容不多不少朋友都有自动施法和快速施法的困扰英文更新日志一些视觉BUG修复就不翻译了主要翻译自动施...

Redis 是如何提供服务的

在刚刚接触Redis的时候,最想要知道的是一个’setnameJhon’命令到达Redis服务器的时候,它是如何返回’OK’的?里面命令处理的流程如何,具体细节怎么样?你一定有问过自己...

lua _G、_VERSION使用

到这里我们已经把lua基础库中的函数介绍完了,除了函数外基础库中还有两个常量,一个是_G,另一个是_VERSION。_G是基础库本身,指向自己,这个变量很有意思,可以无限引用自己,最后得到的还是自己,...

China&#39;s top diplomat to chair third China-Pacific Island countries foreign ministers&#39; meeting

BEIJING,May21(Xinhua)--ChineseForeignMinisterWangYi,alsoamemberofthePoliticalBureau...

移动工作交流工具Lua推出Insights数据分析产品

Lua是一个适用于各种职业人士的移动交流平台,它在今天推出了一项叫做Insights的全新功能。Insights是一个数据平台,客户可以在上面实时看到员工之间的交流情况,并分析这些情况对公司发展的影响...

Redis 7新武器:用Redis Stack实现向量搜索的极限压测

当传统关系型数据库还在为向量相似度搜索的性能挣扎时,Redis7的RedisStack...

Nginx/OpenResty详解,Nginx Lua编程,重定向与内部子请求

重定向与内部子请求Nginx的rewrite指令不仅可以在Nginx内部的server、location之间进行跳转,还可以进行外部链接的重定向。通过ngx_lua模块的Lua函数除了能实现Nginx...