963 Stimmen

Git-Ignore-Datei für Xcode-Projekte

Welche Dateien sollte ich in .gitignore bei Verwendung von Git in Verbindung mit Xcode ?

20 Stimmen

Siehe https://www.gitignore.io/api/swift,xcode,Cobjective-c,osx

2 Stimmen

Der obige Link führt zu einem Fehler: gitignore.io/api/swift,xcode,objective-c,osx

736voto

Adam Punkte 32525

Ich war zuvor mit dem Top-abgestimmte Antwort, aber es braucht ein bisschen von Cleanup, so hier ist es für Xcode 4 neu gemacht, mit einigen Verbesserungen.

Ich habe recherchiert chaque Datei in dieser Liste zu finden, aber einige davon existieren nicht in der offiziellen Xcode-Dokumentation von Apple, also musste ich die Apple-Mailinglisten bemühen.

Apple fügt weiterhin undokumentierte Dateien hinzu, die unsere laufenden Projekte beschädigen können. Das ist IMHO inakzeptabel, und ich habe jetzt begonnen, jedes Mal, wenn sie das tun, Fehler zu melden. Ich weiß, dass es ihnen egal ist, aber vielleicht wird es einen von ihnen beschämen, Entwickler fairer zu behandeln.


Wenn Sie etwas anpassen müssen, können Sie sich an dieser Stelle ein Beispiel nehmen: https://gist.github.com/3786883


#########################
# .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
#

0 Stimmen

Ich nahm an, dass Sie einen Gist meinten - da das offizielle Github-Projekt für .gitignores nicht gepflegt wurde und Einreichungen verweigerte, als ich das letzte Mal nachschaute (IIRC gab es 200 ignorierte Pull-Requests und eine riesige Anzahl von Issues, die ignoriert wurden)

1 Stimmen

Ok, ich habe gerade ein Problem damit bemerkt. Ich habe ein wenig Git-Akrobatik betrieben, und als ich zurück nach Master auscheckte und meine versteckten Änderungen anwandte, hatte ich meine gespeicherten Build-Schemata verloren! Zum Glück hatte ich sie gesichert, nur für den Fall... aber die Lösung ist, ein wenig spezifischer im xcuserdata-Verzeichnis zu ignorieren. Ich änderte xcuserdata zu xcdebugger und UserInterfaceState.xcuserstate die wirklich offensiv zu begehen sind.

0 Stimmen

Ich schlage auch vor, .svn für Projekte hinzuzufügen, die mit beiden Versionskontrollsystemen arbeiten

276voto

Hagelin Punkte 15971

Basierend auf diese Anleitung für Mercurial meine .gitignore enthält:

.DS_Store
*.swp
*~.nib

build/

*.pbxuser
*.perspective
*.perspectivev3

Ich habe mich auch für die Aufnahme entschieden:

*.mode1v3
*.mode2v3

die nach Angaben von dieser Beitrag auf der Apple-Mailingliste sind "benutzerspezifische Projekteinstellungen".

Und für Xcode 4:

xcuserdata

53 Stimmen

Ich mag nicht besonders die .pbxuser/ .perspective/*.perspectivev3-Muster. Ich bevorzuge die folgenden .xcodeproj/ !*.xcodeproj/project.pbxproj Damit wird alles innerhalb einer *.xcodeproj ignoriert, außer der project.pbxproj.

6 Stimmen

Ich ignoriere *.pbxuser, *.perspective und *.perspectivev3 nicht, weil ich diese Einstellungen gerne beibehalte, wenn ich mein Repository klone.

3 Stimmen

Verwenden Sie build/, um nur Verzeichnisse mit dem Namen build auszuschließen, falls Sie ein Skript oder etwas anderes mit dem Namen build haben, das Sie nicht ignorieren wollen.

73voto

Abizern Punkte 137651

Bezüglich des Ausschlusses des Verzeichnisses "build" -

Wenn Sie, wie ich, Ihre Build-Dateien in einem anderen Verzeichnis als Ihren Quellcode ablegen, müssen Sie sich nicht um den Ordner im Baum kümmern.

Dies vereinfacht auch die gemeinsame Nutzung Ihres Codes, verhindert unübersichtliche Sicherungskopien und ist selbst dann von Vorteil, wenn Sie Abhängigkeiten zu anderen Xcode-Projekten haben (die Builds müssen sich im selben Verzeichnis befinden).

Sie können eine aktuelle Kopie aus dem Github gist herunterladen https://gist.github.com/708713

Meine aktuelle .gitignore-Datei lautet

# Mac OS X
*.DS_Store

# Xcode
*.pbxuser
*.mode1v3
*.mode2v3
*.perspectivev3
*.xcuserstate
project.xcworkspace/
xcuserdata/

# Generated files
*.o
*.pyc

#Python modules
MANIFEST
dist/
build/

# Backup files
*~.nib

8 Stimmen

Ich habe die Build-Ordner außerhalb des Projektordners, aber wenn andere Benutzer das Projekt zu bauen, ist es standardmäßig in das Projekt neu erstellt - so fand ich, dass das Hinzufügen zu der Ignorieren-Datei eine bessere Lösung ist, sonst wird es in ihre Übertragungen gelesen.

59voto

Vladimir Mitrovic Punkte 1760

Für Xcode 4 füge ich auch hinzu:

YourProjectName.xcodeproj/xcuserdata/*
YourProjectName.xcodeproj/project.xcworkspace/xcuserdata/*

80 Stimmen

Wenn Sie nur hinzufügen xcuserdata dann ist beides erledigt.

7 Stimmen

Aus irgendeinem Grund hat das Hinzufügen von xcuserdata ohne das Präfix bei mir nicht funktioniert. Ich dachte aber, es sollte funktionieren. Seltsam.

24voto

program247365 Punkte 3841

Ich habe diese Vorschläge in eine Gist aufgenommen, die ich auf Github erstellt habe: http://gist.github.com/137348

Fühlen Sie sich frei, es zu teilen und zu verbessern.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X