它必须非常明显,但我发现无法做到这一点.每个手册都将变基描述为现有分支或简单交互式变基的顶部,这就是全部.假设,我有一个类似钻石形状的git历史:
* 949430f Merge commit (D) (HEAD, mybranch)
|\
| * e6a2e8b (C)
* | 3e653ff (B)
|/
* 9c3641f Base commit (A)
Run Code Online (Sandbox Code Playgroud)
我希望像以下一样保持历史:
* 949430f Combined commit (BCD)
|
* 9c3641f Base commit (A)
Run Code Online (Sandbox Code Playgroud)
提交B和C可能会被融化或丢弃,无所谓,我只想保留结果.此外,我不想因为令人讨厌的恐慌解决而还原提交.
这里我试过的事情:
1)我不能通过简单压扁B和C来避免这种情况
git rebase -i HEAD~2
...
p 3e653ff (B)
f e6a2e8b (C)
...
Could not apply a91f3a4
Run Code Online (Sandbox Code Playgroud)
嗯,这有点可以理解,有一些冲突.
2)我无法通过压扁来解决这个问题.
git rebase -i -p HEAD~3
...
pick 9c3641f Base commit (A)
f 3e653ff (B)
f e6a2e8b (C)
pick 949430f Merge commit (D)
...
error: unable to match a91f3a4...
Run Code Online (Sandbox Code Playgroud)
3)我甚至不能丢弃B和C.
git rebase -i -p -m HEAD~3
...
pick 9c3641f Base commit (A)
#pick 3e653ff (B)
#pick e6a2e8b (C)
pick 949430f Merge commit (D)
...
error: Commit 949430f is merged but option -m is not set.
fatal: cherry-pick failed
Could not pick 4f3e6231b5cecf57434613ca3afd2a21ba375eb9
Run Code Online (Sandbox Code Playgroud)
为什么?这是选项"-m"......
有谁知道如何解决这个问题?
你想要的是git reset --soft(加上aragaer提到的提交).尽管问题的情况不同,请参阅VonC的回答.
| 归档时间: |
|
| 查看次数: |
418 次 |
| 最近记录: |