2013-09-10 18 views
2

我本應該爲我的項目所依賴的第三方模塊執行subtree pull --squash,但我不小心忘記了放--squash。現在我的項目提交歷史充滿了第三方模塊提交。它們遍佈整個日誌。忘記使用`--squash`,現在提交歷史是一團糟。我怎樣才能清理這個爛攤子?

這混亂需要消失。如果可能,我如何識別屬於第三方模塊的所有提交,將它們壓縮成一個,然後從我的項目歷史中清除它們?

更多信息:

請注意,我已經做了多次提交,我打算繼續,斷手術後。

回答

5
  1. 使用git reflog可以在您執行破壞操作之前找到您的項目狀態。
  2. 看看這個散列或git reset --hard它。
  3. 用正確的標誌重做該操作。
+0

謝謝Carl。但是,我的情況有點複雜。我做了幾次提交,在破壞操作之後需要保留。我怎樣才能撤銷破壞的操作,同時選擇性地保留在破壞操作之後發生的一些提交? – tamakisquare

+2

你知道你的提交嗎?在你解決問題之後,只要櫻桃挑選或重新綁定它們。 –

+1

要刪除未執行操作中遺留的提交,請嘗試執行以下操作:[Garbage Collect Commit in Git](http://stackoverflow.com/questions/14991916/garbage-collect-commits-in-git) – LopSae