2014-02-20 244 views
1

可以说我已经提交了1,2,3,4,5。提交2和5是我的,其余的是由别人完成的。因为3,4提交有一些错误! 我推送了提交。 承诺5是我想申请在提交2.Git删除具体提交

我要回滚提交2和应用更改我的新变化commmit 5.

我应该如何删除特定承诺3和4孤独?

回答

1

做一个变基:

git rebase -i HEAD~5 

这将打开一个编辑器窗口;只需删除对应于提交3和4的pick行。退出编辑器:rebase将继续。

注意:危险和冲突的来源;如果底垫由于某种原因失败,或者修复它(手;看到git rebase手册页)或git rebase --abort终止它)

当底垫被完成后,按与-f选项。但与你在这个回购工作的人不会感谢你!

+0

我已经承诺最近的变化! – Dineshkumar

+0

然后跳过藏匿一部分;)编辑 – fge

+0

还我已经推了! – Dineshkumar

0

这里是另一种方法,只是为了变化。

您应做的是对的5个顶级的承诺3和4

将恢复代码如果您还没有推开这些提交创建新的提交,你也可以做一个摘樱桃。说你的回购HEAD指向5点,它是分行主。

1 -> 2 -> 3 -> 4-> 5 (HEAD, master) 


git co -b temp 

1 -> 2 -> 3 -> 4 -> 5 (HEAD, master, temp) 


git co master 
git reset --hard HEAD~3 

1 -> 2 (HEAD, master)-> 3 -> 4 -> 5 (temp) 


git cherry-pick temp 

1 -> 2 -> 3 -> 4 -> 5 (temp) 
    | 
    -> 5' (HEAD, master) 


git branch -D temp 

1 -> 2 -> 5' (master, HEAD) 


我想这是你想要的。尽管你会做的更好,以创建还原上的5

注意顶部承诺:通过@fge给出的方法更简洁,最好的,如果你以前做过一个互动变基。如果没有,这个人会给你一个战斗的机会,因为你永远可以合并主回温,并得到从你开始点在哪里。