2012-05-17 116 views
1

在那裏有很多問題涉及忽略git中的東西,但沒有一個似乎適用於我的特定情況。我有一個項目,看起來像這樣:Git忽略和未版本化的本地文件

proj 
|-foo/ 
|--project-file.txt 
|-bar/ 
|--project-file2.txt 
|-temp/ 
|--machine-specific-file.txt 
|--machine-specific-file2.txt 

(編輯:增加了清晰度)我的.gitignore文件:

temp/ 

我的項目有幾個分公司,都具有不同的機器有關的文件在他們中。我的問題是:由於我沒有跟蹤特定於計算機的文件(沒有理由檢查它們,因爲它們僅在此處有用),所以每次切換分支並嘗試打開我的項目時,機器特定的文件被覆蓋。這是一個問題,因爲我的軟件需要大約10分鐘才能生成它們 - 當我每天切換分支5或6次時會很煩人。有沒有辦法以某種方式跟蹤每個分支機器特定的文件,而不必將它們存儲在服務器上?

事情我已經嘗試:

  • 創造,我需要工作,每個分支一個新的本地分支,大大節省了機器有關的文件有,當我需要合併我的工作,合併它首先與原始分支(簡單,因爲它是一個快速前進),然後與其他所有事物合併。問題:它有效,但是很混亂,並且由於.gitignore的差異,有時需要一段時間才能完成第一次合併。也許這是正確的方法呢?似乎應該有更好的解決方案。

  • 製作子模塊 - 我不認爲我理解這個過程,因爲我一直無法按照自己想要的方式工作。由於該文件必須命名爲相同的東西,在每個文件夾中,我不認爲我正確指定了我想要的存儲庫的位置。

讓我知道你是否有任何指針!謝謝。

回答

2

如何檢查符號鏈接,指向完全忽略的機器特定目錄中的文件?每個分支都有相同名稱的符號鏈接,指向不同的目標。每臺機器負責用必要的內容填充機器特有的目錄。

 
branch a: 
temp/machine-specific-1 => ../local-files/machine-specific-1-branch-a 

branch b: 
temp/machine-specific-1 => ../local-files/machine-specific-1-branch-b 

可選檢查模板文件,從不直接引用的目錄中,並在加入啓動腳本的本地文件複製手動在從模板目錄中的文件上重新檢出。

+0

oooh。我喜歡這些建議。讓我試試它們,然後我會報告它們是如何工作的。謝謝! – gailbear

+0

經過進一步的思考:如果我的項目上的每個人都理解計算機足以使其工作,或者如果我有權爲他們設置他們的機器,那麼simlink解決方案將完美工作。事實上,安裝git需要一個2頁,非常具體的文檔,我手寫的,因爲人們「不明白主要git站點上的說明」。 *嘆*因爲他們大多數都不會改變分支,所以我的問題對我來說是獨一無二的。我會嘗試編寫一個引導腳本,在結帳時,從另一個本地git倉庫中抽取相應的結帳。 – gailbear

+0

我結束了在本地使用引導腳本的符號鏈接的東西。合理優雅,而且工作量最少! – gailbear

0

temp/加到您的.gitignore文件中。

這將忽略此目錄中的所有文件。當克隆到另一臺電腦,什麼都不會放在這個目錄中(也存儲當你做一個git add .git commit


做一個submodule遵循this link。做子模塊的訣竅是你必須將所有'想要'的文件移動到一個單獨的git存儲庫中。如果你已經在當前的git倉庫中擁有子目錄,但這並不是不可能的,那麼這可能會非常棘手(將當前的目錄樹克隆爲臨時目錄樹,執行git filter-branch --subdirectory-filter,將其推向公共回購站...這樣,不會失去歷史!)。在設置單獨的遙控器之後,您將能夠執行git add submodule <path to repo> <localpath>,並且所有這些都將在全世界都很好。

+0

假設你提到'我沒有跟蹤機器特定的文件(沒有理由檢查它們,因爲它們只在這裏有用)''意味着你不關心跟蹤它們... – g19fanatic

+0

是的,這是真的,我已經這樣做了。然而,由於這些文件在我更改分支時被覆蓋,我試圖找出一種方式來以某種方式在本地跟蹤而不是全局跟蹤,這並不需要我每次切換分支時都會跳過這些環節。 – gailbear

+0

如果您在更改分支時被覆蓋,這告訴我他們實際上在您的存儲庫中。我首先將它們從repo'git rm temp/*'中刪除,然後確保適當的過濾器位於'.gitignore'中。在不同的分支上執行此操作,您不必擔心任何被覆蓋的內容......它會忽略此目錄...要在本地但不是全局跟蹤它們,則需要執行子模塊。 – g19fanatic