當初看 Pro Git 時就被作者這個“核彈級選項”的稱呼嚇到了,因此一直沒敢好奇地去嘗試。核彈啊,用對了威力無窮,用錯了破壞力無窮!
但是,今天,我不得不用了,因為我想把我的原來寫一些程式碼放到 github 上去公開。由於之前沒想過要公開,到上傳時才發現不能上傳大於50M的檔案。
折騰了半天,還是無法上傳,於是,整個命令出來了:
--tree-filter
表示修改檔案列表。--msg-filter
表示修改提交資訊,原提交資訊從標準輸入讀入,新提交資訊輸出到標準輸出。--prune-empty
表示如果修改後的提交為空則扔掉不要。在一次試執行中我發現雖然檔案被刪除了,但是還剩下個空的提交,就查了下 man 文件,找到了這個選項。-f
是忽略備份。不加這個選項第二次執行這個命令時會出錯,意思是 git 上次做了備份,現在再要執行的話得處理掉上次的備份。--all
是針對所有的分支。
試執行了幾次,看到 40 多次提交逐一被重寫,然後檢查下,發現要刪除的檔案確實被刪除了。於是高興地到 github 建立新倉庫,並上傳了。
折騰完畢,我更加喜歡 git 了 :-)