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

完。

相关文章
|
4月前
|
开发工具 git
git merge和git rebase异同
git merge和git rebase异同
151 0
|
开发工具 git
成功解决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 开发者
【git merge/rebase】详解合并代码、解决冲突
【git merge/rebase】详解合并代码、解决冲突
217 0
|
4月前
|
JSON 开发工具 git
git rebase 合并当前分支的多个commit记录
git rebase 合并当前分支的多个commit记录
|
20天前
|
开发工具 git 开发者
|
2月前
|
开发工具 git 开发者
git IDEA的分支合并时的冲突问题总结,merge和rebase的区别
冲突的处理需要开发者之间的充分沟通以及对项目历史的细致理解。选择Merge或Rebase取决于具体的工作流程和团队偏好,但最重要的是保持代码库的整洁与一致性。使用IDEA等工具可以提高处理合并冲突的效率,但手动解析冲突和理解操作背后的逻辑仍然是不可或缺的。最终目标是通过有效的版本控制实践,促进项目的顺利进行和团队协作的高效。
164 0
|
3月前
|
安全 开发工具 git
蓝易云 - git rebase和merge区别
在选择使用Merge还是Rebase时,需要根据具体的工作流程和团队的规定来决定。一般来说,如果你想保持完整的历史记录并且避免可能的冲突,你应该使用Merge。如果你想要一个干净的、线性的历史记录,你可以使用Rebase。
33 4
|
4月前
|
开发工具 git
git pull之后出现REBASE(1/1)
git pull之后出现REBASE(1/1)
197 3
|
4月前
|
开发工具 git 开发者
【专栏】探讨了 Git 中的 `git rebase` 操作,它用于重新应用提交到另一分支,改变历史顺序
【4月更文挑战第29天】本文探讨了 Git 中的 `git rebase` 操作,它用于重新应用提交到另一分支,改变历史顺序。与 `git merge` 不同,rebase 重写提交历史,提供简洁线性的历史记录。文章介绍了 rebase 的基本操作、应用场景,如整理提交历史、解决冲突和整合分支,并强调了使用注意事项,如避免在公共分支上操作。尽管 rebase 可以带来整洁的历史和冲突解决便利,但其潜在的风险和可能导致的历史混乱需谨慎对待。理解并恰当使用 `git rebase` 可以提升开发效率和代码质量。
157 1
|
4月前
|
前端开发 开发工具 git
git rebase 和 git merge的区别?以及你对它们的理解?
git rebase 和 git merge的区别?以及你对它们的理解?
97 1