初次使用 git 的“核彈級選項”:filter-branch 從倉庫中刪除檔案

來源:互聯網
上載者:User

標籤:style   http   ar   color   使用   sp   on   檔案   div   

當初看 Pro Git 時就被作者這個“核彈級選項”的稱呼嚇到了,因此一直沒敢好奇地去嘗試。核彈啊,用對了威力無窮,用錯了破壞力無窮!

但是,今天,我不得不用了,因為我想把我的原來寫一些代碼放到 github 上去公開。由於之前沒想過要公開,到上傳時才發現不能上傳大於50M的檔案。

折騰了半天,還是無法上傳,於是,整個命令出來了:

 git filter-branch --tree-filter ‘rm -rf files_to_remove‘ --prune-empty -f HEAD --all

命令挺複雜的,所以我是在一個 clone 出來的倉庫裡先試運行。先解釋下各個參數:

  • --tree-filter表示修改檔案清單。
  • --msg-filter表示修改提交資訊,原提交資訊從標準輸入讀入,新提交資訊輸出到標準輸出。
  • --prune-empty表示如果修改後的提交為空白則扔掉不要。在一次試運行中我發現雖然檔案被刪除了,但是還剩下個空的提交,就查了下 man 文檔,找到了這個選項。
  • -f是忽略備份。不加這個選項第二次運行這個命令時會出錯,意思是 git 上次做了備份,現在再要啟動並執行話得處理掉上次的備份。
  • --all是針對所有的分支。

試運行了幾次,看到 40 多次提交逐一被重寫,然後檢查下,發現要刪除的檔案確實被刪除了。於是高興地到 github 建立新倉庫,並上傳了。

折騰完畢,我更加喜歡 git 了 :-)

初次使用 git 的“核彈級選項”:filter-branch 從倉庫中刪除檔案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.