2016-02-12 111 views
0

我在我的磁盤上有一些GitHub項目,但其中許多項目沒有被激活使用。從git倉庫中刪除工作文件,以節省空間

我想暫時刪除工作文件,因爲它們存儲在提交歷史記錄中,所以我可以在稍後檢索它們。

刪除文件最簡單的方法是rm -rf *但它有一些缺點:

  • 如果我回來以後它不會刪除點文件如.gitignore
  • git status抱怨很多刪除文件。我必須研究是否應該進行這些清除,或者如果我剛剛刪除它們以暫時節省空間。

什麼是刪除工作文件的快捷方式?有沒有辦法乾淨地做到這一點?

回答

1

創建一個空的分支,似乎很好地工作:

  1. 檢查您的所有文件都安全地提交到一個分支(例如「主」或「開發」分支)。
  2. 創建一個空分支。我會稱它爲「空」。

    git checkout --orphan empty 
    
  3. 但是,並沒有刪除文件。手動操作:

    git reset --hard 
    
  4. 該分支還沒有真正存在。作出初步承諾確認:

    git commit --allow-empty -m 'Empty commit' 
    

現在所有的文件都沒有了,你是在體現這種情況的一個分支。


這個過程好東西:

  • 它使用Git的自己的機制。沒有令人困惑的骯髒狀態。
  • 很明顯,當您看到分支名稱時發生了什麼。
  • 您可以輕鬆地切換回主用git checkout master
  • 您可以輕鬆地git checkout empty

缺點再次切換回空分支:

  • 初始過程需要3個命令。
  • 如果您不熟悉分支機構,或者查看您正在使用哪個分支機構,那麼當您返回到該文件夾​​時,您可能會想知道您的所有文件都已經走了!
+0

您也可以[將您的回購轉換爲裸倉庫](http://stackoverflow.com/questions/7380741/how-to-remove-working-tree-from-a-git-repository),但然後它贏了如此輕而易舉就可以檢出文件並像以前一樣工作。 – joeytwiddle

+0

還有一些[其他技巧可以減少磁盤空間](http://stackoverflow.com/questions/1398919/make-git-consume-less-disk-space),包括[創建一個沒有歷史的淺層克隆](http://stackoverflow.com/questions/1398919/make-git-consume-less-disk-space#35356887)。 – joeytwiddle

1

如果你使用git 2.5。1或更高版本,則可以使用裸存儲庫,如果要檢查或使用其內容,請使用git worktree add /some/checkout/path branch

工作樹完全可以像標準的git克隆一樣工作,期望您在那裏運行的所有修改(提交,新分支,標記...)都可以應用到裸副本。

相關問題