Quali file dovrei includere .gitignore
quando uso Git insieme a Xcode ?
Quali file dovrei includere .gitignore
quando uso Git insieme a Xcode ?
Risposte:
In precedenza utilizzavo la risposta più votata, ma ha bisogno di un po 'di pulizia, quindi qui è stata rifatta per Xcode 4, con alcuni miglioramenti.
Ho cercato tutti i file in questo elenco, ma molti di essi non esistono nella documentazione Xcode ufficiale di Apple, quindi ho dovuto andare sulle mailing list di Apple.
Apple continua ad aggiungere file privi di documenti, corrompendo potenzialmente i nostri progetti live. Questo IMHO è inaccettabile e ora ho iniziato a registrare i bug contro di esso ogni volta che lo fanno. So che a loro non importa, ma forse vergognerà uno di loro nel trattare gli sviluppatori in modo più equo.
Se devi personalizzarlo, ecco un riassunto che puoi biforcare: 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
#
*.lock
o Podfile.lock
(non importa la ridondanza). Volete le stesse identiche versioni installate in tutte le aree di lavoro, non volete la "versione più recente".
developer.apple.com
merito xccheckout
. Ma sulla pagina ufficiale di github, questo file era già incluso nel file gitignore. https://github.com/github/gitignore/blob/master/Objective-C.gitignore
Sulla base di questa guida per Mercurial, il mio .gitignore include:
.DS_Store
*.swp
*~.nib
build/
*.pbxuser
*.perspective
*.perspectivev3
Ho anche scelto di includere:
*.mode1v3
*.mode2v3
che, secondo questo post della mailing list di Apple , sono "impostazioni di progetto specifiche dell'utente".
E per Xcode 4:
xcuserdata
git rm --cached <files>
Per quanto riguarda l'esclusione della directory "build" -
Se metti i tuoi file di build in una directory diversa dalla tua fonte, come faccio io, non hai la cartella nella struttura di cui preoccuparti.
Ciò semplifica anche la vita per la condivisione del codice, evitando backup gonfiati e anche quando si hanno dipendenze da altri progetti Xcode (mentre è necessario che le build siano nella stessa directory l'una dell'altra)
Puoi prendere una copia aggiornata dal Gistub https://gist.github.com/708713
Il mio file .gitignore attuale è
# 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
Per Xcode 4 aggiungo anche:
YourProjectName.xcodeproj/xcuserdata/*
YourProjectName.xcodeproj/project.xcworkspace/xcuserdata/*
xcuserdata
, questo si occupa di entrambi.
Ho incluso questi suggerimenti in un Gist che ho creato su Github: http://gist.github.com/137348
Sentiti libero di rovesciarlo e renderlo migliore.
Le persone di GitHub hanno file .gitignore esaustivi e documentati per i progetti Xcode:
Swift: https://github.com/github/gitignore/blob/master/Swift.gitignore
Objective-C: https://github.com/github/gitignore/blob/master/Objective-C.gitignore
.gitignore
ora è stato aggiornato per Xcode 6.3.2 e Swift, quindi ora è corretto. È anche documentato.
Dovresti dare un'occhiata a gitignore.io per Objective-C e Swift.
Ecco il .gitignore
file che sto usando:
# Xcode
.DS_Store
*/build/*
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
profile
*.moved-aside
DerivedData
.idea/
*.hmap
*.xccheckout
*.xcworkspace
!default.xcworkspace
#CocoaPods
Pods
gitignore
file per qualunque IDE / lingua ecc. Che stai usando. Aggiungerà anche una sezione di cocoapodi. Brilliant
Sto usando sia AppCode che XCode. Quindi .idea/
dovrebbe essere ignorato.
aggiungilo a quello di Adam .gitignore
####
# AppCode
.idea/
Ecco uno script che ho creato per creare automaticamente i tuoi file .gitignore e .gitattributes usando Xcode ... L'ho hackerato insieme ad altre cose di altre persone. Divertiti!
Nessuna garanzia ... Faccio schifo per quasi tutto questo, quindi usalo a tuo rischio e pericolo
Aggiunta di un file .gitignore per
Mac OS X + Xcode + Swift
Ecco come ho aggiunto un file .gitignore al mio progetto Swift:
Ecco la struttura dei risultati:
# file
#########################################################################
# #
# Title - .gitignore file #
# For - Mac OS X, Xcode 7 and Swift Source projects #
# Updated by - Ramdhan Choudhary #
# Updated on - 13 - November - 2015 #
# #
#########################################################################
########### Xcode ###########
# Xcode temporary files that should never be committed
## Build generated
build/
DerivedData
# NB: NIB/XIB files still exist even on Storyboard projects, so we want this
*~.nib
*.swp
## Various settings
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
## Other
*.xccheckout
*.moved-aside
*.xcuserstate
*.xcscmblueprint
*.xcscheme
########### Mac OS X ###########
# Mac OS X temporary files that should never be committed
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
########## Objective-C/Swift specific ##########
*.hmap
*.ipa
# CocoaPods
#
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
#
# Pods/
# Carthage
#
# Add this line if you want to avoid checking in source code from Carthage dependencies.
# Carthage/Checkouts
Carthage/Build
# fastlane
#
# It is recommended to not store the screenshots in the Git repository. Instead, use fastlane to re-generate the
fastlane/report.xml
fastlane/screenshots
Bene, grazie ad Adam . La sua risposta mi ha aiutato molto, ma ho dovuto aggiungere ancora alcune voci perché volevo un file .gitignore per:
Mac OS X + Xcode + Swift
Il mio è un .bzrignore, ma è la stessa idea :)
.DS_Store
*.mode1v3
*.pbxuser
*.perspectivev3
*.tm_build_errors
Tm_build_errors è per quando uso TextMate per costruire il mio progetto. Non è completo come Hagelin, ma ho pensato che valesse la pena pubblicarlo per la linea tm_build_errors.
Ho aggiunto:
xcuserstate
xcsettings
e ho posizionato il mio file .gitignore alla radice del mio progetto.
Dopo aver commesso e spinto. Ho quindi eseguito:
git rm --cached UserInterfaceState.xcuserstate WorkspaceSettings.xcsettings
sepolto con la cartella qui sotto:
<my_project_name>/<my_project_name>.xcodeproj/project.xcworkspace/xcuserdata/<my_user_name>.xcuserdatad/
Ho quindi eseguito git commit e spinto di nuovo
Uso il seguente file .gitignore generato in gitignore.io:
### Xcode ###
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.xcuserstate
### Objective-C ###
# Xcode
#
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
# CocoaPods
#
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
#
Pods/
Ecco quello .gitignore
che GitHub utilizza per impostazione predefinita per i nuovi repository Xcode:
https://github.com/github/gitignore/blob/master/Objective-C.gitignore
È probabile che sia ragionevolmente corretto in qualsiasi momento.
La maggior parte delle risposte proviene dall'era Xcode 4-5. Consiglio un file ignore in stile moderno.
# Xcode Project
**/*.xcodeproj/xcuserdata/
**/*.xcworkspace/xcuserdata/
**/*.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
**/*.xcworkspace/xcshareddata/*.xccheckout
**/*.xcworkspace/xcshareddata/*.xcscmblueprint
.idea/
# Xcode Injection
IOSInjectionProject/
OSXInjectionProject/
# Build
build/
DerivedData
# CocoaPods
Pods/
# fastlane
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output
fastlane/sign&cert
# CSV
*.orig
.svn
# Other
*~
.DS_Store
*.swp
*.save
._*
*.bak
Tienilo aggiornato da: https://github.com/BB9z/iOS-Project-Template/blob/master/.gitignore
Abbiamo scoperto che anche se aggiungi .gitignore e .gitattribte il file * .pbxproj può essere danneggiato. Quindi abbiamo un piano semplice.
Ogni persona che codifica in ufficio ignora semplicemente le modifiche apportate a questo file. Nel commit citiamo semplicemente i file che vengono aggiunti al sorgente. E quindi spingere sul server. Il nostro gestore dell'integrazione estrae e vede i dettagli del commit e aggiunge i file nelle risorse.
Una volta aggiornato il telecomando, tutti avranno sempre una copia funzionante. Nel caso in cui manchi qualcosa, lo informiamo di aggiungerlo e quindi tirare di nuovo.
Questo ha funzionato per noi senza problemi.
Consiglio di usare joe per generare un .gitignore
file.
Per un progetto iOS, eseguire il comando seguente:
$ joe g osx,xcode > .gitignore
Genererà questo .gitignore
:
.DS_Store
.AppleDouble
.LSOverride
Icon
._*
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
build/
DerivedData
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
*.xcuserstate
Una struttura di un file .gitignore standerd per il progetto Xcode>
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
Icon?
ehthumbs.db
Thumbs.db
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
!default.xcworkspace
xcuserdata
profile
*.moved-aside
DerivedData
.idea/
gitignore
qui il tuo file, questo non aggiunge nulla a questo argomento.
https://www.gitignore.io/api/swift,xcode,Cobjective-c,osx