2010-04-27 179 views
12

我有一個網站項目,有超過50,000個不重要的文件(開發)在一些目錄中。Git忽略刪除的文件

/website.com/files/1.txt 
/website.com/files/2.txt 
/website.com/files/3.txt 
/website.com/files/etc.txt 

/文件中的東西已經在回購。我想刪除本地副本上/文件中的所有文件,但我希望git忽略它,以便在執行Web服務器上的操作時不會將其刪除。

任何想法?

回答

1

好吧我找到了解決方案。只需在子目錄中創建一個新的回購庫,父回購庫將忽略它們。

+1

,將工作,但它的效果並不理想,在多個項目一簇樹枝/回購結束了。隨着項目清單變得越來越大,前進可能會變得很痛苦。我建議您更熟悉'.gitignore'和索引管理工具。我在上面的回答中有一個體面的教程。一旦你嘗試過一次,它真的很容易...... – MaurerPower 2012-06-03 02:36:27

+0

@MaurerPower,雖然我很欣賞你的描述性答案,但是'git rm --cached'不符合我的要求。例如,如果我使用該命令,然後提交併推送。當我拉到另一臺服務器時,它仍然會從該服務器刪除這些文件,即使它沒有從原始服務器中刪除它們。我做了一個litte測試,這是我的結果:http://pastebin.com/5X0t1KGs – Petah 2012-06-03 03:09:44

2

創建子回購是一種解決方案,但您應該使該子回購成爲submodule

這樣:

  • 你保持正常含量
  • 之間和「文件」內容的鏈接,如果「文件」內容的演變有一天,你可以在主回購
  • 註冊其演變
  • 您可以檢出的主要回購沒有「git submodule update」(即不填充「files」內容
  • 有關部署,在git submodule initgit submodule update將足以找回RI ght版本的'files'內容。
6

下面的代碼適用於刪除以及修改後的文件,以便在您執行git狀態時忽略它。

git update-index --assume-unchanged dir-im-removing/ 

或特定文件

git update-index --assume-unchanged config/database.yml 

Ignore modified (but not committed) files in git?

請注意:以上已刪除的文件,當你做的建議 「git的承諾-am」 包括被刪除的文件!

對我而言,一個解決方案就是不刪除文件,只是將其內容留空。這是我用來靜音.htaccess文件。

10

忽略整個目錄不起作用。我不得不這樣做:

for i in `git status | grep deleted | awk '{print $3}'`; do git update-index --assume-unchanged $i; done 
+2

我需要將'$ 3'更改爲'$ 2' git版本2.3.2 – crizCraig 2015-05-12 01:13:22