2012-03-31 69 views
4

之內的所有現在和將來的文件所以,我是git的新手,但我使用它,因爲我通過heroku部署了我的rails應用程序。我的應用程序在註冊時爲每個用戶生成一個書籤(這只是一個js文件)。不幸的是,當我部署時,活動網站上用戶的所有書籤都會被我的開發環境中用戶的書籤覆蓋。我已經閱讀了關於這種事情的一些其他問題,我知道我必須將bookmarklet文件夾添加到.gitignore文件,以及關於rm --cache的一些內容(但我不確定我要做什麼得做)。我試着做這些事情,但我想知道是否git忽略了現在存在的所有文件,但不會忽略整個gitignore過程後生成的文件。要麼這樣做,要麼我做錯了(這很可能)。強制git忽略一個目錄以及

任何幫助,歡迎。抱歉,這與其他許多類似問題的涵義相同。我做了儘可能多的研究。

謝謝。

+0

'.gitignore'適用於存儲庫中* not *的文件。它對存儲庫中的文件不做任何處理。您的文件是否在存儲庫中? – 2012-03-31 21:50:49

+0

是的,他們是。這是一個Rails應用程序,它們在公共文件夾中。 – 2012-03-31 21:52:21

+1

好吧,我想我不清楚爲什麼你有Git倉庫中的開發用戶數據。您是否考慮將您的用戶數據存儲在存儲庫之外? – 2012-03-31 21:53:29

回答

1

聽起來像Heroku的被清理出在沒有檢查到你的Git倉庫,當你部署的每個文件。修改您的應用程序以將書籤保存到您的Git存儲庫之外的目錄。

7

這裏是一些簡單的步驟:

  1. 創建存儲庫的根文件.gitignore,用下面的簡單內容:

    /path/to_your/folder 
    
  2. 將文件添加到你的資料庫:

    git add .gitignore 
    
  3. 從代表中刪除文件夾ository(這不會物理刪除的文件夾):

    git rm --cached /path/to_your/folder 
    
  4. 提交

    git commit 
    

之後,該文件夾應該從你的倉庫和隨後的變化中要刪除它會被忽略通過混帳。

+0

比我的更好的答案,也更快:) – Castilho 2012-03-31 21:55:41

+0

這工作忽略該文件夾,但現在當我推動該網站住與heroku,而不是用dev版本覆蓋bookmarklets文件夾,它覆蓋沒有任何的bookmarklets文件夾,從而刪除他們。 – 2012-04-02 14:06:53

+0

是的,被刪除,該文件夾現在不會被推送(因爲它根本不存在存儲庫)。然後,您可能需要查看不同的解決方案,例如設置用戶特定的文件夾和* default *文件夾來放置與開發相關的文件,並修改應用程序以僅使用那些默認的文件夾,如果其他文件夾不存在。甚至更好:將數據庫之外的東西存儲在數據庫中。 – poke 2012-04-02 17:12:41

0

以下內容添加到您的.gitignore:

path/to/ignore/**/* 

如果已經跟蹤這條道路上的文件,他們將不會被忽略。

你必須運行

git rm -r --cached path/to/ignore/ 
0

@捅的答案大多是正確的,但在路徑名的斜線是有問題的,所以我發佈修訂後的指令。

以下步驟假定您的git存儲庫中的子目錄名爲foo

  1. 確保你在你的Git工作目錄的頂層:

    cd "$(git rev-parse --show-toplevel)" 
    
  2. 添加foo到您的頂級.gitignore文件:

    echo /foo/ >>.gitignore 
    

    的斜線說忽略foo在頂層但不是*/foo*/*/foo等等。尾部的斜線表示忽略foo如果它是一個目錄,但不是它是一個文件或符號鏈接。

  3. 階段新修改的.gitignore

    git add .gitignore 
    
  4. 提交:

    git commit -m "Add foo to .gitignore" 
    
  5. 停止跟蹤foo目錄的內容在Git倉庫:

    git rm -r --cached foo 
    

    --cached選項告訴Git不要從工作目錄中刪除foo文件夾。

  6. 提交:

    git commit -m "Remove the foo directory" 
    
+0

這可以忽略該文件夾,但是現在當我將該網站與heroku一起生活時,不用用dev版本覆蓋bookmarklets文件夾,而是用什麼都不覆蓋bookmarklets文件夾,從而刪除它們。 – 2012-04-02 14:06:39

+0

@BonChampion:看到我的其他答案 – 2012-04-02 16:24:35