注意:这种情况是如何形成的,更像是一个故事,与 IMO 无关。
给定以下 git 提交图,从最旧的开始,全部推送到原点
start
|
breaking
/ \
fix #0 work
| |
fix #1(master) morework(issue-fix)
Run Code Online (Sandbox Code Playgroud)
我需要移动我的分支(问题修复)以基于开始,而不是破坏,即把它变成
start
/ \
breaking |
| |
fix #0 work
| |
fix #1(master) morework(issue-fix)
Run Code Online (Sandbox Code Playgroud)
中断中的更改与问题修复(项目的不同部分)无关,但它们会导致该分支的 CI 失败,因为测试也涵盖了项目的该部分。
我认为 rebase 会起作用,但是在检查了 morework 之后,在 SourceTree 中尝试它什么也没做,手动运行 git rebase start 只是打印 Current branch issue-fix is up to date
有没有一种干净有效的方法来做到这一点?如果不需要,我不想创建一个新分支并手动移动所有内容。
编辑:此外,问题修复已被拉入另一个分支,从而在那里也引入了错误的提交。同样的过程会在那里工作,还是会在问题修复上打破那个分支?
您应该使用交互式 rebase 来摆脱分支的breaking提交issue-fix。
在您的情况下,您应该结帐到issue-fix分支机构并执行以下操作:
git rebase -i HEAD~3
然后,当编辑器打开时,您应该能够选择要离开哪些提交以及要摆脱哪些提交:
drop 2dsafa ... will delete the commit you want to get rid of
pick sdfsadf .. will leave this commit
pick dfsa4sdc .. will leave this commit
Run Code Online (Sandbox Code Playgroud)
如果你的issue-fix分支已经被合并到处于损坏状态的其他分支,那么事情会变得有点复杂。
在这种情况下,我建议使用交互式 rebase 来摆脱issue-fix来自其他分支的提交。之后,我会将来自其他分支的提交重新绑定到issue-fix.
| 归档时间: |
|
| 查看次数: |
5522 次 |
| 最近记录: |