2014-01-30 125 views
2

我莫名其妙地这样做:删除提交混帐

A -- B -- C (init) 
     /
     Z (master) 

我无法弄清楚如何删除在Z提交或豪“变基”作为A的母公司是,即使可能吗?

回答

2

如果Z轴采用什么可以摆脱它与reset --hard

git reset --hard init (if init is a branch) 

git reset --hard HEAD^ (moves one commit back) 

如果您需要保留ž但尽早(第一个可能是A后),那么你可以做一个interactiv变基

git rebase -i <sha of A> 

和重新排序日提交的

Z 
B 
C 

(A没有显示为它的根提交)

1

为什么你需要删除它?只需还原该提交。

git revert <SHA-ID> 

否则,你想核子提交。硬重置为HEAD-1会将您的工作副本设置为错误提交之前的提交状态。

git reset --hard HEAD~1 
+0

提交是'无用'只有在这里的文件是空的.gitignore。提交A已经初始化.gitignore。 – svobol13

+0

@ svobol13:回答更新 –

1

为了使ž承诺为A的父试试这个:

git checkout -b b_branch {B hash} 
git checkout master 
git rebase b_branch 
git checkout -b a_branch {A hash} 
git rebase master 
+0

这只是ff从Z到提交C的主ref。提交Z仍然在我的图中:( – svobol13

+0

@ svobol13我更新了我的帖子,现在它描述了如何在B和一个 –