如何停止忽略子树子目录中的文件模式?
How do I stop ignoring a file pattern in a subtree subdirectory?
我正在为我自己的 Unity 项目使用 Git(我是唯一的开发人员,所以我可以使用破坏性命令).
Unity 开发人员可能知道,Unity 会为 "Assets" 文件夹下的所有内容创建“.meta”文件,该文件夹是项目的主文件夹。这些文件 "must" 也会与原始文件一起进行跟踪,以保持项目的完整性。
这里是项目库的 .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
文件应该在导入框架时由每个项目生成进入项目。 (在框架回购中到处看到 .meta
文件很烦人。)
这是框架存储库的 .gitignore
文件:
# Exclude ".meta" files created by Unity
*.meta
# Autogenerated VS/MD solution and project files
### The rest is identical to the project .gitignore file. ###
正如您想象的那样,我尝试将框架作为子树添加到项目存储库中。它确实有效,但是有一个问题:忽略.meta
文件的框架存储库的.gitignore
文件,也适用于项目存储库并导致它忽略子树目录下的.meta
文件.
总结一下:我想要跟踪子树目录(递归)中的.meta
个文件在项目存储库中,但在框架存储库中被忽略。
(对于那些想知道为什么必须跟踪 .meta
文件的人来说,最重要的原因是 .meta
文件包含各自资产的 ID,Unity 按顺序使用这些 ID在项目中引用这些资产。)
您可以在您的 Asset 目录中添加一个 .gitignore
文件来覆盖和否定 !
的继承无知
我对你的文件结构层次结构有点困惑,所以这里有一个例子来演示。
.
├── .gitignore
├── main.meta
└── unity
├── .gitignore
└── sub.meta
根目录的内容.gitignore
*.meta
unity/.gitignore
的内容
!*.meta
现在让我们看看git想要跟踪什么:
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 元文件,但在其他任何地方都忽略了它们。
我正在为我自己的 Unity 项目使用 Git(我是唯一的开发人员,所以我可以使用破坏性命令).
Unity 开发人员可能知道,Unity 会为 "Assets" 文件夹下的所有内容创建“.meta”文件,该文件夹是项目的主文件夹。这些文件 "must" 也会与原始文件一起进行跟踪,以保持项目的完整性。
这里是项目库的 .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
文件应该在导入框架时由每个项目生成进入项目。 (在框架回购中到处看到 .meta
文件很烦人。)
这是框架存储库的 .gitignore
文件:
# Exclude ".meta" files created by Unity
*.meta
# Autogenerated VS/MD solution and project files
### The rest is identical to the project .gitignore file. ###
正如您想象的那样,我尝试将框架作为子树添加到项目存储库中。它确实有效,但是有一个问题:忽略.meta
文件的框架存储库的.gitignore
文件,也适用于项目存储库并导致它忽略子树目录下的.meta
文件.
总结一下:我想要跟踪子树目录(递归)中的.meta
个文件在项目存储库中,但在框架存储库中被忽略。
(对于那些想知道为什么必须跟踪 .meta
文件的人来说,最重要的原因是 .meta
文件包含各自资产的 ID,Unity 按顺序使用这些 ID在项目中引用这些资产。)
您可以在您的 Asset 目录中添加一个 .gitignore
文件来覆盖和否定 !
我对你的文件结构层次结构有点困惑,所以这里有一个例子来演示。
.
├── .gitignore
├── main.meta
└── unity
├── .gitignore
└── sub.meta
根目录的内容.gitignore
*.meta
unity/.gitignore
!*.meta
现在让我们看看git想要跟踪什么:
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 元文件,但在其他任何地方都忽略了它们。