この質問は、別の質問を読んでコメントすることから生じます。XcodeプロジェクトのGit無視ファイル
アダムの答え(および付随する要点)は決定的なもののように見えますが、実際にそれを機能させることはできません。gitignore構文の私の理解は不完全なようです。
私のセットアップ:OSX 10.8.2、gitバージョン1.7.9.6(Apple Git-31.1)。グローバルなgitignoreファイルはありません。
Xcode4.5のOSXアプリケーションテンプレートで作成された新しいプロジェクトでテストしています。
これは、テストプロジェクトファイルのレイアウトです。
./.gitignore
./MyApp
./MyApp/AppDelegate.h
./MyApp/AppDelegate.m
./MyApp/en.lproj
./MyApp/en.lproj/Credits.rtf
./MyApp/en.lproj/InfoPlist.strings
./MyApp/en.lproj/MainMenu.xib
./MyApp/main.m
./MyApp/MyApp-Info.plist
./MyApp/MyApp-Prefix.pch
./MyApp.xcodeproj
./MyApp.xcodeproj/project.pbxproj
./MyApp.xcodeproj/project.xcworkspace
./MyApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata
./MyApp.xcodeproj/project.xcworkspace/xcuserdata
./MyApp.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad
./MyApp.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate
./MyApp.xcodeproj/xcuserdata
./MyApp.xcodeproj/xcuserdata/admin.xcuserdatad
./MyApp.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes
./MyApp.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes/MyApp.xcscheme
./MyApp.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes/xcschememanagement.plist
ソース管理を無効にしてテストプロジェクトを設定し、ターミナルでgitリポジトリを手動で初期化します。作業ディレクトリはプロジェクトディレクトリです。
git init
git add .
git commit -m "first commit"
コミットされたファイルのリストを返します。
13 files changed, 5204 insertions(+)
create mode 100644 MyApp.xcodeproj/project.pbxproj
create mode 100644 MyApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata
create mode 100644 MyApp.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate
create mode 100644 MyApp.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes/MyApp.xcscheme
create mode 100644 MyApp.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes/xcschememanagement.plist
create mode 100644 MyApp/AppDelegate.h
create mode 100644 MyApp/AppDelegate.m
create mode 100644 MyApp/MyApp-Info.plist
create mode 100644 MyApp/MyApp-Prefix.pch
create mode 100644 MyApp/en.lproj/Credits.rtf
create mode 100644 MyApp/en.lproj/InfoPlist.strings
create mode 100644 MyApp/en.lproj/MainMenu.xib
create mode 100644 MyApp/main.m
各.gitignoreテストの後、.gitフォルダーを削除して再初期化することでリセットしました。
.gitignoreがこれである場合
AppDelegate.h
その後
./MyApp/AppDelegate.h
除外されます
.gitignoreをに変更した場合
AppDelegate*
これらは両方とも
./MyApp/AppDelegate.h
./MyApp/AppDelegate.m
予想どおりに除外されます
私の.gitignoreがこれである場合:
AppDelegate*
!AppDelegate.m
繰り返しAppDelegate.h
ますが、除外されるのは
これはすべて予想通りです
ただし、除外ルールが包含フォルダーである場合、reincludesを機能させることができません
たとえば、私の.gitignoreがこれである場合
xcuserdata
その後、これらのファイルは除外されます
./MyApp.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate
./MyApp.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes/MyApp.xcscheme
./MyApp.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes/xcschememanagement.plist
xcschemesのコンテンツを再度含めたい場合
xcuserdata
!xcschemes
結果は同じです-!xcschemes
無視されているようです。
同様に、.gitignoreが
en.lproj
これらのファイルは除外されます
./MyApp/en.lproj/Credits.rtf
./MyApp/en.lproj/InfoPlist.strings
./MyApp/en.lproj/MainMenu.xib
それらの1つを再含めたい場合
en.lproj
!Credits.rtf
同じファイルが除外されます:!Credits.rtf
無視されます。
gitignoreのマンページには次のように書かれています。
オプションのプレフィックス!これはパターンを否定します。以前のパターンで除外された一致するファイルは、再び含まれるようになります。否定されたパターンが一致する場合、これは優先順位の低いパターンのソースをオーバーライドします。
しかし、「優先順位の低いパターンのソース」が何を意味するのか、またはそれがここで関連するのかどうかはわかりません。
私は何が欠けていますか?
update
Adamは、これらの問題を考慮してgitignoreの要点を更新しました。私は彼の変更を私のフォークにラップし、XCodeプロジェクトがすでにgitの制御下にあるときにそのような.gitignoreを追加または変更する方法についてのメモも追加しました。