我有一个项目有两个分支,名为master和feature/x.在feature/x上我正在处理将在master上合并的新功能.
对于feature/x上的错误,基于master的rebase操作已完成并被推送.除了其他提交已完成并推送功能/ x.
所以我有两个分支,包含由不同哈希标记的"相同提交".
A -- B -- C -- D [master]
\
E -- F -- G -- H -- I [feature/x]
Run Code Online (Sandbox Code Playgroud)
其中C
和D
上主分别是相同的提交(衍合)F
和G
上特征/ X.
我想删除F
和G
从feature/x维护H
和I
.我该怎么做?
我想恢复提交
git revert F G
Run Code Online (Sandbox Code Playgroud)
来自feature/x,但那些无用(重复)提交将保留在历史记录中.我想知道是否有更好的方法来做到这一点?
最简单的方法是以交互方式进行折扣:结账feature/x
,并且做
git rebase -i E
Run Code Online (Sandbox Code Playgroud)
然后只需从提示编辑的rebase脚本中删除F,G的行.这将使您的分支看起来像
master -> A -- B -- C -- D
\
feaure/x -> E -- H' -- I'
\
(orphaned) F -- G -- H -- I
Run Code Online (Sandbox Code Playgroud)
你也可以做同样的事情
git rebase --onto E G feature/x
Run Code Online (Sandbox Code Playgroud)
但是交互方法更容易记住(我必须在在线帮助中查找参数顺序).
请注意,旧提交仍然存在,并且可以恢复,但如果没有任何引用它们,最终将被垃圾收集.