2017-03-10 114 views
0

我有一個棘手的情況。我需要刪除並重新提交一些我已經推送到github remote repo的提交。但是這些提交不再是HEAD(人們把它們推到頂端)。刪除不是HEAD的遠程提交

我明白我可以恢復提交,因此保留提交歷史記錄。但要求是讓錯誤承諾消失

所以:

D <- other people's commit 
| 
C <- B and C are wrong commits! They need to be removed 
| <- The changes that should be preserved from B and C will be 
B <- committed on top of D 
| 
A <- this was the initial state 

給予更多的解釋,我使用的是2個不同的GitHub佔工作/個人。我意外地使用個人GitHub賬戶將B和C交給公司回購。所以,我需要從非員工賬戶中刪除這些提交

回答

0

你不能那樣做。

問題是提交D裏面有提交C的ID。任何你要擺脫BC將會,如果它是有效的,擺脫承諾D

可以副本提交D到一個新的D'這是一個很像D但:

  1. 將刪除是在BC的變化,並
  2. 使用A作爲其父犯

但是如果當你這樣做時,你必須與其他所有人合作已經提交D現在,特別是誰寫它,並得到所有切換到新的D'副本作爲其父親A

通常這不值得去做。要讓其他47人撤銷並重做所有的工作太難了,只是爲了彌補你之前犯的一個錯誤。只要生活在錯誤中。

如果錯誤是不是讓每個人都氣死你爲使他們重新做所有他們工作更糟的是,看到How to modify existing, unpushed commits?