修改某次提交的内容
比如有下面一段提交历史:
0621df5ad (qos_sched) sched: Fix sleeping in atomic context at cpu_qos_write() f169a3e0b sched: Introduce handle priority reversion mechanism b08fcb6bb sched: unthrottle qos cfs rq when free a task group 830d63d9d sched: Avoid sched entity null pointer panic f5a4134a5 sched: Clear idle_stamp when unthrottle offline tasks 5f62b2bf1 sched: Fix offline task can't be killed in a timely ca399d0c0 sched: Optimizing qos scheduler performance e079ac6eb sched: Fix throttle offline task trigger panic 5025848e0 sched: Remove residual checkings for qos scheduler 9eef33bca sched: Change cgroup task scheduler policy 9c409a3dc sched: Unthrottle the throttled cfs rq when offline rq 0a394a4a9 sched: Enable qos scheduler config b7b6a9871 sched: Throttle qos cfs_rq when current cpu is running online 9f71556dd sched: Introduce qos scheduler for co-location 42c06287c memcg: Add static key for memcg priority 74730fdaf memcg: fix kabi broken when enable CONFIG_MEMCG_QOS a54bc3e94 memcg: enable CONFIG_MEMCG_QOS by default 140510d4d Add defconfig file: kernel-4.18.0-x86_64-openeuler.config cd5b70b17 memcg: support priority for oom ef037177f mm: memcontrol: add struct mem_cgroup_extension 1840d2057 (master) add .gitignore 0d939f247 remove some files 9cac7cdce init version
当前所在的分支是qos_sched,如果此时发现9f71556dd sched: Introduce qos scheduler for co-location
的代码有些问题,但是又不想重新引入一个新的提交记录,那么
可以这么来:
- 切到出问题的commit
git checkout 9f71556dd -b tmp
- 修改代码bug,然后提交
git commit --amend
此时的提交历史类似下面这种:
E---F---G---H---I qos_sched / D 9f71556dd / A---B---C---J tmp
- 执行命令:
git rebase --onto tmp 9f71556dd qos_sched
此时的提交历史变成:
D 9f71556dd / A---B---C---J tmp \ E'---F'---G'---H'---I' qos_sched BASH 复制 全屏
完。