FROM COMMENTS: Apple is wrong; Apple code is too buggy to trust; there are no known negative side-effects to ignoring Apple's unofficial advice and instead doing the thing that actively fixes bugs in Xcode
Up to you, but ... current advice: ignore it.
*.xccheckout
#
#
OPTION 1: ---------------------------------
throw away ALL personal settings (including custom schemes!
- unless they are "shared")
As per build/ and DerivedData/, this ought to have a trailing slash
#
NB: this is exclusive with OPTION 2 below
xcuserdata/
OPTION 2: ---------------------------------
get rid of ALL personal settings, but KEEP SOME OF THEM
- NB: you must manually uncomment the bits you want to keep
#
NB: this requires git v1.8.2 or above; you may need to upgrade to latest OS X,
or manually install git over the top of the OS X version
NB: this is exclusive with OPTION 1 above
#
xcuserdata/*/
(requires option 2 above): Personal Schemes
#
!xcuserdata/*/xcschemes/
XCode 4 workspaces - more detailed
#
Workspaces are important! They are a core feature of Xcode - don't exclude them :)
#
Workspace layout is quite spammy. For reference:
#
/(root)/
/(project-name).xcodeproj/
project.pbxproj
/project.xcworkspace/
contents.xcworkspacedata
/xcuserdata/
/(your name)/xcuserdatad/
UserInterfaceState.xcuserstate
/xcshareddata/
/xcschemes/
(shared scheme name).xcscheme
/xcuserdata/
/(your name)/xcuserdatad/
(private scheme).xcscheme
xcschememanagement.plist
#
#
Xcode 4 - Deprecated classes
#
Allegedly, if you manually "deprecate" your classes, they get moved here.
#
We're using source-control, so this is a "feature" that we do not want!
*.moved-aside
OPTIONAL: Some well-known tools that people use side-by-side with Xcode / iOS development
#
NB: I'd rather not include these here, but gitignore's design is weak and doesn't allow
modular gitignore: you have to put EVERYTHING in one file.
TO BUILD OUT .gitignore file, based on existing template (since many files are auto-generated upon building new xcode project/ group/ etc)
1) retrieve template from: https://github.com/github/gitignore
2) ammend template/ view explanations of gitignored files at http://stackoverflow.com/questions/49478/git-ignore-file-for-xcode-projects
#########################
.gitignore file for Xcode4 and Xcode5 Source projects
#
Apple bugs, waiting for Apple to fix/respond:
#
15564624 - what does the xccheckout file in Xcode5 do? Where's the documentation?
#
Version 2.6
For latest version, see: http://stackoverflow.com/questions/49478/git-ignore-file-for-xcode-projects
#
2015 updates:
- Fixed typo in "xccheckout" line - thanks to @lyck for pointing it out!
- Fixed the .idea optional ignore. Thanks to @hashier for pointing this out
- Finally added "xccheckout" to the ignore. Apple still refuses to answer support requests about this, but in practice it seems you should ignore it.
- minor tweaks from Jona and Coeur (slightly more precise xc* filtering/names)
2014 updates:
- appended non-standard items DISABLED by default (uncomment if you use those tools)
- removed the edit that an SO.com moderator made without bothering to ask me
- researched CocoaPods .lock more carefully, thanks to Gokhan Celiker
2013 updates:
- fixed the broken "save personal Schemes"
- added line-by-line explanations for EVERYTHING (some were missing)
#
NB: if you are storing "built" products, this WILL NOT WORK,
and you should use a different .gitignore (or none at all)
This file is for SOURCE projects, where there are many extra
files that we want to exclude
# #########################
OS X temporary files that should never be committed
#
c.f. http://www.westwind.com/reference/os-x/invisibles.html
.DS_Store
c.f. http://www.westwind.com/reference/os-x/invisibles.html
.Trashes
c.f. http://www.westwind.com/reference/os-x/invisibles.html
*.swp
#
*.lock - this is used and abused by many editors for many different things.
For the main ones I use (e.g. Eclipse), it should be excluded
from source-control, but YMMV.
(lock files are usually local-only file-synchronization on the local FS that should NOT go in git)
c.f. the "OPTIONAL" section at bottom though, for tool-specific variations!
#
In particular, if you're using CocoaPods, you'll want to comment-out this line:
*.lock
#
profile - REMOVED temporarily (on double-checking, I can't find it in OS X docs?)
profile
Xcode temporary files that should never be committed
NB: NIB/XIB files still exist even on Storyboard projects, so we want this...
*~.nib
Xcode build files -
#
NB: slash on the end, so we only remove the FOLDER, not any files that were badly named "DerivedData"
DerivedData/
NB: slash on the end, so we only remove the FOLDER, not any files that were badly named "build"
build/
Xcode private settings (window sizes, bookmarks, breakpoints, custom executables, smart groups)
#
This is complicated:
#
SOMETIMES you need to put this file in version control.
Apple designed it poorly - if you use "custom executables", they are
saved in this file.
99% of projects do NOT use those, so they do NOT want to version control this file.
..but if you're in the 1%, comment out the line "*.pbxuser"
.pbxuser: http://lists.apple.com/archives/xcode-users/2004/Jan/msg00193.html
*.pbxuser
.mode1v3: http://lists.apple.com/archives/xcode-users/2007/Oct/msg00465.html
*.mode1v3
.mode2v3: http://lists.apple.com/archives/xcode-users/2007/Oct/msg00465.html
*.mode2v3
.perspectivev3: http://stackoverflow.com/questions/5223297/xcode-projects-what-is-a-perspectivev3-file
*.perspectivev3
NB: also, whitelist the default ones, some projects need to use these
!default.pbxuser !default.mode1v3 !default.mode2v3 !default.perspectivev3
Xcode 4 - semi-personal settings
#
Apple Shared data that Apple put in the wrong folder
c.f. http://stackoverflow.com/a/19260712/153422
FROM ANSWER: Apple says "don't ignore it"
FROM COMMENTS: Apple is wrong; Apple code is too buggy to trust; there are no known negative side-effects to ignoring Apple's unofficial advice and instead doing the thing that actively fixes bugs in Xcode
Up to you, but ... current advice: ignore it.
*.xccheckout
# #
OPTION 1: ---------------------------------
throw away ALL personal settings (including custom schemes!
- unless they are "shared")
As per build/ and DerivedData/, this ought to have a trailing slash
#
NB: this is exclusive with OPTION 2 below
xcuserdata/
OPTION 2: ---------------------------------
get rid of ALL personal settings, but KEEP SOME OF THEM
- NB: you must manually uncomment the bits you want to keep
#
NB: this requires git v1.8.2 or above; you may need to upgrade to latest OS X,
or manually install git over the top of the OS X version
NB: this is exclusive with OPTION 1 above
#
xcuserdata/*/
(requires option 2 above): Personal Schemes
#
!xcuserdata/*/xcschemes/
XCode 4 workspaces - more detailed
#
Workspaces are important! They are a core feature of Xcode - don't exclude them :)
#
Workspace layout is quite spammy. For reference:
#
/(root)/
/(project-name).xcodeproj/
project.pbxproj
/project.xcworkspace/
contents.xcworkspacedata
/xcuserdata/
/(your name)/xcuserdatad/
UserInterfaceState.xcuserstate
/xcshareddata/
/xcschemes/
(shared scheme name).xcscheme
/xcuserdata/
/(your name)/xcuserdatad/
(private scheme).xcscheme
xcschememanagement.plist
# #
Xcode 4 - Deprecated classes
#
Allegedly, if you manually "deprecate" your classes, they get moved here.
#
We're using source-control, so this is a "feature" that we do not want!
*.moved-aside
OPTIONAL: Some well-known tools that people use side-by-side with Xcode / iOS development
#
NB: I'd rather not include these here, but gitignore's design is weak and doesn't allow
modular gitignore: you have to put EVERYTHING in one file.
#
COCOAPODS:
#
c.f. http://guides.cocoapods.org/using/using-cocoapods.html#what-is-a-podfilelock
c.f. http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
#
!Podfile.lock
#
RUBY:
#
c.f. http://yehudakatz.com/2010/12/16/clarifying-the-roles-of-the-gemspec-and-gemfile/
#
!Gemfile.lock
#
IDEA:
#
c.f. https://www.jetbrains.com/objc/help/managing-projects-under-version-control.html?search=workspace.xml
.idea/workspace.xml
#
TEXTMATE:
#
-- UNVERIFIED: c.f. http://stackoverflow.com/a/50283/153422
#
tm_build_errors
UNKNOWN: recommended by others, but I can't discover what these files are
#