使用git rebase --onto一例

简介: 使用git rebase --onto一例

修改某次提交的内容

比如有下面一段提交历史:

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 复制 全屏

完。

目录
打赏
0
1
1
0
113
分享
相关文章
git merge和git rebase异同
git merge和git rebase异同
194 0
成功解决git rebase问题:First, rewinding head to replay your work on top of it...
成功解决git rebase问题:First, rewinding head to replay your work on top of it...
|
3天前
|
git的rebase和merge的区别
通过这些内容和示例,您可以深入理解Git的 `rebase`和 `merge`操作及其区别,选择合适的方法进行分支管理,提高版本控制的效率和规范性。希望这些内容对您的学习和工作有所帮助。
25 5
git rebase的使用
通过这些思维导图和分析说明表,您可以更直观地理解Git rebase的概念、用法和应用场景。希望本文能帮助您更高效地使用Git rebase,提高代码管理的效率和质量。
100 17
git rebase的使用
通过这些思维导图和分析说明表,您可以更直观地理解Git rebase的概念、用法和应用场景。希望本文能帮助您更高效地使用Git rebase,提高代码管理的效率和质量。
148 13
理解前端开发中的 Git - Rebase
Git Rebase 是前端开发中常用的一种版本控制操作,用于将一个分支的更改整合到另一个分支。与合并(Merge)不同,Rebase 可以使提交历史更加线性整洁,有助于保持代码库的清晰和可维护性。通过 Rebase,开发者可以将特性分支的改动应用到主分支上,同时保留或重写提交记录。
git rebase 合并当前分支的多个commit记录
git rebase 合并当前分支的多个commit记录
196 1
【git merge/rebase】详解合并代码、解决冲突
【git merge/rebase】详解合并代码、解决冲突
768 0
蓝易云 - git rebase和merge区别
在选择使用Merge还是Rebase时,需要根据具体的工作流程和团队的规定来决定。一般来说,如果你想保持完整的历史记录并且避免可能的冲突,你应该使用Merge。如果你想要一个干净的、线性的历史记录,你可以使用Rebase。
72 4

相关实验场景

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等