git - 重新设置单个提交而不重播后续提交
问题描述
在以下设置中,我有两个分支 B1 和 B2
[B1]
-o-o-d1-d2-d3
\
c1-c2-c3
[B2]
我想将提交 c1 切换到 B1 以实现以下设置
-o-o-d1-c1-d2-d3
\
c2-c3
我知道我可以将 c1 挑选到第一个分支上。但如果我只在分支 B1 上更改了 c1,我的历史记录会更清晰。(我承认,这个问题可以看作是一个美学问题......但我希望 git 有一个很好的解决方案。)
解决方案
你只需要做:
git checkout B1
git rebase c1
rebase 会将来自提交 c1 和分支 B1 之间的最后一个共同祖先的所有提交重新应用到 c1,即来自 d1(最后一个共同祖先)的 B1 中的所有提交。
在您的情况下,d2 和 d3。
推荐阅读
- c# - 在 EF Core 3 中播种相关数据,出现错误:对象引用未设置为对象的实例
- syntax - C++ 为什么 Placement New 需要 STL 标头?
- c++ - 是否有插入函数定义的快捷键?
- java - 带有数据流的 Apache Beam Go SDK
- javascript - 如何使用 fetch 从 api 获取数据
- laravel - Blade 将 Collection 作为 String 而不是 Array
- javascript - 如何正确地将 JavaScript 合并到 html 中?
- git - git config --list 再找一个user.naemail=xb1 如何删除user.naemail?
- swift - 带有请求参数和标头的分段上传 (Alamofire)
- php - 为什么我的下拉列表在提交后会重置?