news 2026/5/5 14:59:27

这些Git操作,早晚用得上

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
这些Git操作,早晚用得上

日常addcommitpush三连确实够了。但总有那么几次,你会遇到:

  • 合并冲突不知道怎么解
  • commit写错了想改
  • 把代码搞乱了想回退
  • 想从别的分支偷一个提交过来

这篇把这些场景的处理方法都写一遍,下次遇到直接查。

合并冲突

两个人改了同一个文件的同一个地方,Git不知道该保留哪个,就产生冲突了。

gitmerge feature# CONFLICT (content): Merge conflict in src/config.js

打开文件,会看到这样的标记:

<<<<<<<HEADconstAPI='https://prod.api.com';=======constAPI='https://test.api.com';>>>>>>>feature

<<<<<<<=======是你当前分支的代码,=======>>>>>>>是要合并进来的代码。

手动改成你想要的样子(把那些标记删掉):

constAPI=process.env.API_URL||'https://prod.api.com';

然后:

gitaddsrc/config.jsgitcommit

搞定。

偷懒的办法:如果你确定要用其中一边的:

gitcheckout--ourssrc/config.js# 用我的gitcheckout--theirssrc/config.js# 用他的

不想合并了

gitmerge--abort

回到合并前的状态。

改最后一次提交

commit message写错了:

gitcommit--amend-m"正确的提交信息"

忘了加某个文件:

gitaddforgotten.jsgitcommit--amend--no-edit

注意:如果已经push了,amend之后要push --force,这个在团队项目里慎用。

撤销

这个场景最多,分情况:

改了文件还没add

gitrestore src/config.js# 恢复单个文件gitrestore.# 恢复所有

add了还没commit

gitrestore--stagedsrc/config.js# 从暂存区撤出

commit了还没push

# 撤销commit,代码还在gitreset HEAD~1# 撤销commit,代码也不要了(危险)gitreset--hardHEAD~1

push了

这时候不能直接reset了(会影响别人),用revert:

gitrevert abc1234# abc1234是要撤销的commit hash

这会创建一个新的commit来撤销之前的改动。

找回搞丢的代码

手残reset --hard之后发现代码没了?别慌。

gitreflog

这个命令会显示你所有的操作历史:

abc1234 HEAD@{0}: reset: moving to HEAD~1 def5678 HEAD@{1}: commit: 重要的改动

找到你想恢复的那个hash:

gitcheckout def5678# 或者gitbranch recover def5678

reflog是救命的东西,只要提交过,都能找回来。

cherry-pick

从别的分支偷一个commit过来。

场景:在develop修了个bug,想把这个修复也应用到release分支。

# 先在develop上提交gitcheckout developgitcommit-m"fix: 修复登录问题"# 假设hash是abc1234# 然后cherry-pick到releasegitcheckout releasegitcherry-pick abc1234

这个命令用得很多,尤其是多版本维护的时候。

rebase -i:整理提交历史

代码写完了,但提交历史很乱:

abc1234 Add feature def5678 Fix typo ghi9012 Fix another typo jkl3456 Actually fix it this time

提PR之前整理一下:

gitrebase-iHEAD~4# 整理最近4个

打开编辑器:

pick abc1234 Add feature pick def5678 Fix typo pick ghi9012 Fix another typo pick jkl3456 Actually fix it this time

把那几个typo修复合并到第一个:

pick abc1234 Add feature fixup def5678 Fix typo fixup ghi9012 Fix another typo fixup jkl3456 Actually fix it this time

fixup会把这个commit合并到前一个,并且丢弃commit message。

保存退出,4个commit变成1个干净的commit。

bisect:二分查找bug

有个bug,不知道是哪个commit引入的,但你知道v1.0是好的,现在是坏的。

gitbisect startgitbisect bad# 标记当前版本有buggitbisect good v1.0# 标记v1.0是好的

然后Git会自动checkout中间的版本,你测试一下:

gitbisect good# 这个版本没问题# 或gitbisect bad# 这个版本有问题

几轮之后Git会告诉你是哪个commit引入的bug。

gitbisect reset# 结束

如果有自动化测试更方便:

gitbisect start HEAD v1.0gitbisect runnpmtest# 自动跑测试

stash:临时保存

写代码写到一半,突然要切分支修个紧急bug。

gitstash# 暂存当前修改gitcheckout hotfix# 切分支干活# 干完活...gitcheckout featuregitstash pop# 恢复之前的修改

可以加描述,方便找:

gitstash push-m"正在做用户模块"gitstash list# 看列表

常用别名

推荐配置:

gitconfig--globalalias.st statusgitconfig--globalalias.co checkoutgitconfig--globalalias.br branchgitconfig--globalalias.lg"log --oneline --graph --all"

git lg看提交历史特别爽。

清理本地分支

时间长了本地会有很多已经合并的分支:

# 删除已合并的分支gitbranch--merged|grep-v"main\|develop"|xargsgitbranch-d# 清理远程已删除的追踪分支gitfetch--prune

这些操作平时可能用不到,但真遇到问题的时候能救命。建议收藏,到时候直接搜。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/5 14:04:31

试试流量回放,不用再写烦人的自动化测试case了

接触过接口自动化测试的同学都知道&#xff0c;我们一般要基于某种自动化测试框架&#xff0c;编写自动化case&#xff0c;编写自动化case的依据来源于接口文档&#xff0c;对照接口文档里面的请求参数进行人工添加接口自动化case 其实&#xff0c;对于日常新的服务端需求的迭…

作者头像 李华
网站建设 2026/5/5 14:58:56

如何彻底解决macOS外接显示器控制难题?DDC协议深度解析与实操指南

如何彻底解决macOS外接显示器控制难题&#xff1f;DDC协议深度解析与实操指南 【免费下载链接】MonitorControl MonitorControl/MonitorControl: MonitorControl 是一款开源的Mac应用程序&#xff0c;允许用户直接控制外部显示器的亮度、对比度和其他设置&#xff0c;而无需依赖…

作者头像 李华
网站建设 2026/5/5 16:21:19

PerfView性能分析工具完整指南:高效诊断应用瓶颈

PerfView是微软开发的一款专业级性能分析工具&#xff0c;专门用于快速定位和解决CPU与内存相关的性能问题。这款工具基于Event Tracing for Windows (ETW)和EventPipe技术&#xff0c;能够深入分析应用程序的执行过程&#xff0c;成为.NET开发者必备的性能诊断利器。 【免费下…

作者头像 李华
网站建设 2026/5/5 16:21:30

【20年经验总结】Dify Excel内存调优实战:从崩溃到流畅只需这6步

第一章&#xff1a;Dify Excel内存调优的背景与挑战 在大规模数据处理场景中&#xff0c;Dify Excel作为一款基于Python生态构建的高性能电子表格解析与生成工具&#xff0c;广泛应用于数据分析、报表自动化等业务流程。然而&#xff0c;随着数据量的增长&#xff0c;其内存占用…

作者头像 李华
网站建设 2026/5/4 4:00:26

【Dify描述生成优化全攻略】:掌握高效AI内容创作的5大核心技巧

第一章&#xff1a;Dify描述生成优化的核心价值在现代AI应用开发中&#xff0c;准确、清晰且具备上下文理解能力的描述生成是提升系统可用性的关键环节。Dify通过其独特的描述生成优化机制&#xff0c;显著增强了自然语言理解与生成&#xff08;NLG&#xff09;任务的表现力和一…

作者头像 李华
网站建设 2026/5/4 11:49:28

5分钟精通RoseTTAFold:2025年蛋白质结构预测实战指南

5分钟精通RoseTTAFold&#xff1a;2025年蛋白质结构预测实战指南 【免费下载链接】RoseTTAFold This package contains deep learning models and related scripts for RoseTTAFold 项目地址: https://gitcode.com/gh_mirrors/ro/RoseTTAFold 你是否曾为复杂的蛋白质结构…

作者头像 李华