假设我正在处理分支中的某个功能oldFeature.我已完成提交A,B1并将其发送给代码审查.在B1我更改了一些现有文件但也添加了newfile.txt.
与此同时,我开始在(== )newFeature分叉的分支机构工作.我已经添加了,,.oldFeatureHEADB1CDE
同时,我得到了代码审查结果,不得不修改B1,更改newfile.txt和更改一些现有文件.修复后,它变成了B2.
所以说明一下:
newFeature oldFeature
A A
B1 B2 [B1 with some fixes]
C
D
E
Run Code Online (Sandbox Code Playgroud)
现在,我在newFeature,我想变基newFeature有B2代替B1.当我简单地执行rebase时,由于newfile.txt在rebase的两个部分中添加了冲突,我已经改变了冲突.
我想保留oldFeature(B2)的版本.
我不能动B1的HEAD,因为C,D,E依赖于它.
我知道我可以做以下的解决方法:
git checkout --theirsgit add然后我会遇到这样的情况:
newFeature oldFeature
A A
B2 B2
BX
C
D
E
Run Code Online (Sandbox Code Playgroud)
BX或多或少B2\B1在哪里存在的文件A.现在我可以进行交互式rebase并删除BX.
但是我的解决方法有点令人费解.有更简单的方法吗?我的意思更简单,我要么
newFeature oldFeature
A A
B2 B2
B2\B1
C
D
E
Run Code Online (Sandbox Code Playgroud)
没有任何rebase冲突,然后我可以摆脱该B2\B1提交,或自动替换它,所以我得到
newFeature oldFeature
A A
B2 B2
C
D
E
Run Code Online (Sandbox Code Playgroud)
使用Git 1.8.0.
Von*_*onC 17
你可以做一个rebase交互:
git checkout new_feature
git rebase --interactive old_feature
Run Code Online (Sandbox Code Playgroud)
并删除B1:您只需删除B1行:
# If you remove a line here THAT COMMIT WILL BE LOST
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3725 次 |
| 最近记录: |