2016-08-12 109 views
1

我使用Git作爲我自己的Unity項目(我是唯一的開發人員,所以我可以使用破壞性命令)Git Subtree特定忽略

在Unity開發者可能知道的情況下,Unity會爲項目的主文件夾「Assets」文件夾下的所有內容創建「.meta」文件。並且這些文件必須與原始文件一起被跟蹤以保持項目的完整性。

這裏是.gitignore文件的項目資源庫:

# Unity Project Folder 
/ExampleProjectName/[Ll]ibrary/ 
/ExampleProjectName/[Tt]emp/ 
/ExampleProjectName/[Oo]bj/ 

# Autogenerated VS/MD solution and project files 
ExportedObj/ 
*.csproj 
*.unityproj 
*.sln 
*.suo 
*.tmp 
*.user 
*.userprefs 
*.pidb 
*.booproj 
*.svd 

# Unity3D Generated File On Crash Reports 
sysinfo.txt 

# OS Related Stuff 
desktop.ini 
.DS_Store 
.DS_Store? 
.Spotlight-V100 
.Trashes 
ehthumbs.db 
Thumbs.db 

我也有一個框架和共同的代碼庫。而我忽略 這個框架庫中的文件,因爲這些腳本的.meta文件應該在將框架導入到項目中時以每個項目爲基礎生成。 (它是討厭看到無處不在的框架回購.meta文件。)

這裏是.gitignore文件的框架資源庫的:

​​

正如你可以想像我試圖添加框架項目存儲庫的子樹。它確實有效,但有一個問題:忽略.meta文件的框架庫文件.gitignore也適用於項目存儲庫,並導致它忽略子樹目錄下的.meta文件。

綜上所述:我想.meta文件,這些文件在樹目錄(遞歸)要在項目庫中跟蹤,但在框架資源庫被忽視。

(對於那些想知道爲什麼.meta文件必須被跟蹤,最重要的原因是.meta文件包括有關資產的ID,並團結,才能在項目全球化志願服務青年這些資產使用這些ID)。

回答

2

您可以在您的資產目錄中添加一個.gitignore文件,該文件覆蓋並取消繼承的無知!

我有點困惑於您的文件結構層次結構,所以這裏是一個演示示例。

. 
├── .gitignore 
├── main.meta 
└── unity 
    ├── .gitignore 
    └── sub.meta 

目錄根的unity/.gitignore

!*.meta 

.gitignore

*.meta 

內容現在讓我們來看看有什麼混帳要追蹤:

git add . && git status --ignored 
On branch master 

Initial commit 

Changes to be committed: 
    (use "git rm --cached <file>..." to unstage) 

    new file: .gitignore 
    new file: unity/.gitignore 
    new file: unity/sub.meta 

Ignored files: 
    (use "git add -f <file>..." to include in what will be committed) 

    main.meta 

你可以看到它跟蹤的是Unity元文件,但忽略了其他地方。