2014-01-30 173 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和一個 –