用好git的几个命令,领导都夸你干的好~

在日常开发过程中,我们经常会遇到需求频繁变动或在提交commit后发现Bug,这通常需要再次进行git commit,从而导致提交日志变得杂乱无章。不过,幸运的是,Git 内部提供了一系列操作命令,可以有效地解决这一问题,使提交日志保持清晰有序。

修改最近一次提交的内容 git commit --amend

用于修改最近一次提交的内容。这个命令允许你更改最后一次提交的提交信息,或者添加一些文件到这个提交中,甚至可以用来修改已经提交到暂存区的文件内容。

主要用途:

比如代码刚提交,发现对应的commit提交模块重复出现了Bug,这时如果新建一个提交去提交此Bug那么后续一个模块可能会产生多个冗余commit, 不利于查找。

用法也比较简单:

终端敲击 git commit --amend,弹出以下修改窗口(修改后的文件需要重新 git add .,把它添加到工作区),会出现以下界面

界面操作跟VI操作命令一致 (i: 编辑,shift + : (输入操作命令) wq(保存),q!(忽略关闭)) ,修改完保存之后,执行git push -f(此时确保你的提交commit是最新,如有同事提交新的commit,此命令会覆盖对方提交commit)

不同分支之间的挑选合并 git cherry-pick

允许我们从一个分支中选择特定的commit,并将其应用到另一个分支上,而无需合并整个分支。

主要用途:

比如一个项目多个不同版本的分支,当某个分支里的某些commit模块上的功能需要被另外一个分支合并,那么git cherry-pick将会很适合你

如下用法:

记录合并目标分支的commit id(多个commit id用空格隔开就行),切换到当前分支,执行git checkout-pick,选择性的合并

执行成功后,然后再git push 推送到仓库里。

有些宝子们可能会出现冲突的情况,首先我们手动把冲突解决了(merge, rebase)都可以,解决完之后,我们执行git add .,添加解决后的文件到暂存区,然后再继续执行git cherry-pick --continue,继续我们的合并过程, 如果想要取消并返回之前的状态则执行git cherry-pick --abort

使用cherry-pick时,有两个点需要注意下,可能会影响到commit tree

  1. 提交哈希值的变化:使用cherry-pick操作后,即使内容相同,新的提交的哈希值也会与原始提交不同,因为它是一个全新的提交。

  2. 提交历史的分叉: 使用cherry-pick命令可能会导致提交历史出现分叉,因为新的提交与原提交的哈希值不同。

临时保存当前工作目录和暂存区的修改 git stash

用于临时保存当前工作目录和暂存区的修改(包括未跟踪的文件或更改),以便清理工作目录,同时不丢失这些修改。

主要用途:

比如你正在开发某个模块,产品同志跑过来说,优先处理这个紧急需求,这时候你盯着暂缓区的修改文件时,就该用git stash这个命令。

用法如下:

如果不需要特别去记录某个提交记录,则直接执行git stash,否则执行git stash save "你的信息"

如果你想要知道你的工作区究竟存了几个stash,则执行git stash list 这个命令可以查看所有stash,而且每个 stash 条目都有一个唯一的标识符(如 stash@{0}

然后你就可以执行git stash apply stash@{n}(n是索引前缀)应用其中一条stash

如果你只需要存一会,然后改完提交再拿下来并删除,那么只需git stash pop执行这个命令(实际上这个命令最常用),同理后缀加上stash@{0} 也是删除并恢复。

如果只需要删除某个stash的话,执行git stash drop stash@{n},清空则是git stash clear

掌握上述几个git操作的用法确实能大大提高我们的开发效率,尤其是分支功能迁移、减少多个冗余commit,让你的commit tree看起来更简洁,更干净,分叉更少!

相关推荐
candyTong2 小时前
一觉醒来,大模型就帮我排查完页面性能问题
前端·javascript·架构
魔术师Grace2 小时前
我给 AI 做了场入职培训
前端·程序员
一只幸运猫.3 小时前
2026Java 后端面试完整版|八股简答 + AI 大模型集成技术(最新趋势)
人工智能·面试·职场和发展
玩嵌入式的菜鸡3 小时前
网页访问单片机设备---基于mqtt
前端·javascript·css
前端一小卒3 小时前
我用 Claude Code 的 Superpowers 技能链写了个服务,部署前差点把服务器搞炸
前端·javascript·后端
滑雪的企鹅.5 小时前
HTML头部元信息避坑指南大纲
前端·html
一拳不是超人5 小时前
老婆天天吵吵要买塔罗牌,我直接用 AI 2 小时写了个在线塔罗牌
前端·ai编程
曹牧5 小时前
Spring:@RequestMapping注解,匹配的顺序与上下文无关
java·后端·spring
拾贰_C6 小时前
【Agent | openai | Streaming | 】流式输出Streaming
ubuntu·面试·prompt
阿丰资源6 小时前
SpringBoot+Vue实战:打造企业级在线文档管理系统
vue.js·spring boot·后端