我的.gitignore
文件包含以下行:
xcuserdata/**/*
!xcuserdata/**/xcschemes/*
但仍会跟踪以下文件
/MyApp/MyApp.xcodeproj/xcuserdata/colas.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist
为什么会这样?我该如何解决这个问题?
PS:如果我有MyApp.xcodeproj/xcuserdata/colas.xcuserdatad/xcdebugger
,则会忽略这些文件。但我不明白为什么没有这个“黑客”它就不会忽视它们。
与其中一个答案中所说的相反,模式
xcuserdata/**/*
!xcuserdata/**/xcschemes/*
工作!!!我的意思是,跟踪/xcschemes
下的文件。
另请参阅帖子Git ignore file for Xcode projects,其中我收到了此.gitignore
文件。
我的Git
版本为1.8.3.4 (Apple Git-47)
。
当我git check-ignore
这个文件时,这就是我得到的
fatal: Not a git repository (or any of the parent directories): .git
但事实是父目录是一个git目录...
当我git check-ignore --no-index --
这个文件时,这就是我得到的
[MT] PluginLoading: Required plug-in compatibility UUID 37B30044-3B14-46BA-ABAA-F01000C27B63 for plug-in at path '~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/XcodeSnippetsHelper.xcplugin' not present in DVTPlugInCompatibilityUUIDs
2014-02-10 10:03:50.856 xcodebuild[1496:d07] XcodeColors: load (v10.1)
2014-02-10 10:03:50.859 xcodebuild[1496:d07] XcodeColors: pluginDidLoad:
fatal: Not a git repository (or any of the parent directories): .git
从根文件夹:
如果我不使用no-index
选项,则无法回复git check-ignore
。
如果我使用no-index
选项:我收到错误error: unknown option 'no-index'
...
奇怪; - !
答案 0 :(得分:4)
首先,您可以执行 git check-ignore
(git 1.8.3.3+)来查看忽略您的文件的规则(假设它首先不在索引中)
其次,请阅读“.gitignore
exclude folder but include specific subfolder”:
如果排除该文件的父目录,则无法重新包含文件。 (
*
)
(*
:除非在git 2.8+中满足某些条件,请参阅下文)
出于性能原因,Git不会列出排除的目录,因此无论在何处定义文件,所包含文件的任何模式都无效。
所以xcschemes
的文件无论如何也不会被忽视
你需要ignore parent folder per parent folder
但更好的方法是仅忽略文件,然后排除文件夹:
xcuserdata/**
!xcuserdata/**/
!xcuserdata/**/xcschemes/**
记住:
在排除文件之前,您需要从gitignore
规则排除文件夹。
请注意,使用git 2.9.x / 2.10(2016年中期?),如果排除该文件的父目录if there is no wildcard in the path re-included,则可能会重新包含文件。
Nguyễn Thái Ngọc Duy (pclouds
)正在尝试添加此功能:
然而:
重新包含规则中的目录部分必须是文字(即没有通配符)
所以无论如何这都行不通。
答案 1 :(得分:0)
将文件名添加到.gitignore
有助于防止您无意中添加文件。
如果您执行git add .
之类的操作来将完整文件的文件夹添加到存储库,则不会添加.gitignore
中忽略的文件(或文件类型)。
必须使用带有-f
命令的git add
标志添加它们。
如果已经跟踪了文件,它将不会改变任何内容。
您可以使用问题的答案停止跟踪文件: Remove a file from a Git repository without deleting it from the local filesystem
编辑:在重新阅读这个问题之后,我想你可能会遇到与此答案中解决的问题大致相同的问题: .gitignore - ignore any 'bin' directory