当前位置: 首页 > news >正文

成为git砖家(9): rebase进阶: 拆分commit为多个

问题描述

当一次性 git add 了多个修改点, 并且快速的执行了 git commit 后, 你觉得有点懊恼: 明明可以独立为两次或多次 commit, 揉在一块导致历史记录不太清晰。

比如我在 nn1 这个练手项目中, 最近一次 commit, 增加了三个函数:

  • evaluate()
  • test_softmax()
  • accuracy()

git commit 后我后悔了,想要拆解为3次 commit,每次一个函数。

我们知道,对于已经存在的多个commit如果要合并起来,那么 rebase 是相当简单的。拆分 commit 呢? 也是可以用 rebase 来做的,用到的是 edit 这个动作。随后恢复暂存区,重新按需add和commit代码。

具体操作

  1. 备份现有代码到新的分支
    这一步是防止 git 操作失误。 其实熟练了可以省略,因为后续修改如果中途不满意可以 git rebase --abort
git checkout backup
  1. rebase到需要修改的commit的前一次commit

例如我最近一次 commit 需要被拆分, 它是 HEAD; 它的上一次commit用 HEAD~ 来表示:

git rebase -i HEAD~
  1. 把 edit 改为 pick
pick f29f90e 理解argmax; 理解accuracy

改为

edit f29f90e 理解argmax; 理解accuracy

在这里插入图片描述

  1. 恢复整个git工作区到文件已经修改了、尚未 git add 的状态

        --mixed
            Resets the index but not the working tree (i.e., the changed
            files are preserved but not marked for commit) and reports what
            has not been updated. This is the default action.
    
git reset HEAD~
  1. 手动添加文件中的一部分
    可以使用 git add -p xxx_file, 也可以用 vscode 图形界面操作, 选中代码区域后右键选择 Staging Selected Ranges

在这里插入图片描述

  1. 执行 git status 查看内容

在这里插入图片描述
确实生效了,增加了一个新的 commit “理解 argmax”:
在这里插入图片描述

  1. 重复 git add, git commit 动作, 直到满意

  2. 执行 git commit --continue, 来告诉 git 你完成了 rebase 操作
    在这里插入图片描述

  3. 最终查看效果
    在这里插入图片描述

相关文章:

  • 红队OPSEC(安全运营)个人总结
  • 【Envi遥感图像处理】015:查看高光谱影像、光谱曲线
  • 浪潮SA5212m5服务器安装PVE8.3的各种问题总结
  • 一文掌握Redisson分布式锁原理
  • 误删/lib64/ld-linux-x86-64.so.2导致系统崩溃
  • 基于深度学习的医学图像分割算法研究——结合MRI/CT图像的肿瘤区域自动分割与三维重建
  • vue3-setup的执行时机(早于beforeCreate this为undefined)与传递参数(props,context)
  • facebook游戏投广:提高广告关键数据的方法
  • python之快捷生成图像验证码
  • 矩阵分析-浅要理解(深度学习方向)
  • Linux本地部署deepseek及SpringBoot集成deepseek
  • Linux 下安装 openjdk 11【详细步骤】
  • C#方法之详解
  • YOLO系列算法全家桶——YOLOv1-YOLOv9详细介绍 !!
  • 基于Prometheus+Grafana的Deepseek性能监控实战
  • PathRAG:通过图剪枝的方法优化Graph-based RAG的性能方法浅析
  • 第七章:Qt 实践
  • 【实战ES】实战 Elasticsearch:快速上手与深度实践-5.3.2实时配送范围计算(距离排序+多边形过滤)
  • 《PyCharm 重命名项目文件时遇到 java.io.IOException 的终极解决方案》
  • Jmeter下载安装配置及使用
  • 网站建设与设计方案/站长工具查询网站信息
  • 网站后台登录不显示验证码/网站提交收录软件
  • 接做网站的私活怎么报价/上海谷歌seo推广公司
  • 做seo网站地图重要吗/电视剧排行榜
  • 网站建设的网/网店推广费用多少钱
  • 百度推广是干什么的/seo网络推广怎么做