2011-05-11 90 views
0

我需要從git歷史記錄中刪除一些過時的文件,因此我遵循使用「git filter-branch ...」的方法在各種問題和git手冊中提出。運行這個命令後,我現在看到我的「git log」中所有重寫的提交,所以我現在有大約30次提交(刪除3個文件後)而不是最初的10次提交。如何清理git過濾器分支後git中過時的重寫提交

我嘗試了在各種答案中提供的建議,以刪除「.git/refs/originals」,然後「git reflog expire ...」和「git gc --aggressive --prune」等,但我仍然有30次提交。我也嘗試了將我的存儲庫複製到新存儲庫的建議,新存儲庫也有30個提交。我也推到github,現在有30個提交。

是否有任何我想丟掉覆蓋的提交(沒有做rebase操作)。我的目標是隻擺脫「重複」提交,而不是壓縮提交。

謝謝!

回答

0

你也可以嘗試rebase -i --preserve-merges或者腳本git cherry-pick --no-commit來做你想做的事。

希望這會有所幫助

+0

我特別不想手代碼rebase命令,因爲我將不得不櫻桃選擇所有原始提交,通過重新合併衝突等我想要的是一種方法來擦除舊的提交被重寫。 – rraheja 2011-05-13 04:30:39

+0

將過期時間設置爲0後,可以通過運行git gc來忘記舊提交。一旦刪除了舊提交的所有引用,那些對象將被垃圾收集。 – 2011-05-14 00:24:59

2

您究竟運行了哪些命令?這可能是最好的做一個新的克隆這個回購,然後再試一次。有關於help.github的指南可能有所幫助。

+0

github鏈接命令正是我使用的。但是,當我做一個「git日誌」時,它顯示了原始提交和新改寫的提交。在github鏈接中運行清除和清理命令並沒有抹掉那些舊的提交。推動github將所有這些舊提交複製到github。所以在所有的回購中,我現在也有舊的提交。我試圖克隆一個新的回購,但它仍然帶來舊的提交。 – rraheja 2011-05-13 04:27:16

+0

您可以通過電子郵件[email protected]瞭解更多詳細信息......您運行的命令的回購和會話轉儲會很好。 – Tekkub 2011-05-13 08:01:55