Plik Git ignore dla projektów Xcode

Jakie pliki należy umieścić w .gitignorepodczas używania Gitw połączeniu z Xcode?

Author: Binarian, 2008-09-08

20 answers

Mods: proszę nie zatwierdzać zmian do tej odpowiedzi. Do tej pory każda edycja była niepoprawna i powoduje utratę danych. Proszę zostaw tę odpowiedź w spokoju!


Jeśli chcesz edytować tę odpowiedź ... najpierw Przeczytaj całość - jest łatwy sposób na zrobienie własnego widelca, a jeśli to nie wystarczy to skomentuj.


Wcześniej korzystałem z najczęściej głosowanej odpowiedzi, ale wymaga to trochę sprzątania, więc tutaj jest ponownie zrobione dla Xcode 4, z niektórymi ulepszenia.

Zbadałemkażdy Plik z tej listy, ale kilka z nich nie istnieje w oficjalnych dokumentach Xcode Apple, więc musiałem udać się na listy mailingowe Apple.

[1]} Apple nadal dodaje nieudokumentowane pliki, potencjalnie uszkadzając nasze projekty na żywo. To IMHO jest nie do zaakceptowania, a teraz za każdym razem zacząłem rejestrować błędy. Wiem, że ich to nie obchodzi, ale może to zawstydzi jednego z nich, aby traktował deweloperów bardziej sprawiedliwie.

Jeśli potrzebujesz dostosuj, oto gist, który możesz rozwidlić: 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
#
 648
Author: Adam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-27 01:57:39

Na podstawie tego poradnika dla Mercurial my .gitignore zawiera:

.DS_Store
*.swp
*~.nib

build/

*.pbxuser
*.perspective
*.perspectivev3

Wybrałem również:

*.mode1v3
*.mode2v3

, które zgodnie z tego postu na liście dyskusyjnej Apple, są "ustawieniami projektu specyficznymi dla użytkownika".

I dla Xcode 4:

xcuserdata
 273
Author: Hagelin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-16 12:00:24

Odnośnie wyłączenia katalogu 'build' -

Jeśli umieścisz swoje pliki kompilacji w innym katalogu niż źródłowy, tak jak ja, nie będziesz musiał martwić się o folder w drzewie.

Ułatwia to również udostępnianie kodu, zapobiegając nadętym kopiom zapasowym, a nawet gdy masz zależności od innych projektów Xcode (podczas gdy wymagają kompilacji w tym samym katalogu co inne)

Możesz pobrać aktualną kopię z GitHub gist https://gist.github.com/708713

Mój prąd .plik gitignore to
# 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
 61
Author: Abizern,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-19 18:30:21

Do Xcode 4 dodaję również:

YourProjectName.xcodeproj/xcuserdata/*
YourProjectName.xcodeproj/project.xcworkspace/xcuserdata/*
 55
Author: Vladimir Mitrovic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-13 14:09:21

Zamieściłem te sugestie w Gist, który stworzyłem na Githubie: http://gist.github.com/137348

/ Align = "left" /
 24
Author: program247365,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-28 20:04:44

Ludzie z GitHub mają wyczerpujące i udokumentowane .pliki gitignore dla projektów Xcode:

Swift: https://github.com/github/gitignore/blob/master/Swift.gitignore

Objective-C: https://github.com/github/gitignore/blob/master/Objective-C.gitignore

 13
Author: Eric,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-22 10:41:26

Używam zarówno AppCode jak i XCode. Więc .idea/ należy zignorować.

Dodaj to do Adama .gitignore

####
# AppCode
.idea/
 12
Author: Wanbok Choi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-29 17:41:55

Powinieneś sprawdzić gitignore.io dla Objective C i Swift

Oto plik .gitignore, którego używam

# 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
 11
Author: onmyway133,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-17 13:49:02

[[1]} Mój jest a .bzrignore, ale ten sam pomysł:)

.DS_Store
*.mode1v3
*.pbxuser
*.perspectivev3
*.tm_build_errors

Tm_build_errors służy do tworzenia projektu za pomocą programu TextMate. Nie tak obszerny jak Hagelin, ale pomyślałem, że warto dodać do linii tm_build_errors.

 10
Author: Dave Verwer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-08 17:51:38

Oto skrypt, który zrobiłem do automatycznego tworzenia Twojego .gitignore i .gitattributes files using Xcode... Zhakowałem go razem z kilkoma rzeczami innych ludzi. Baw się dobrze!

Xcode-Git-User-Script

Brak gwarancji... Jestem do bani co najwyżej - więc używaj na własne ryzyko

 10
Author: tbarbe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-18 04:59:08

Dodanie .plik gitignore dla

MAC OS X + XCode + Swift

Oto jak, dodałem .plik gitignore do mojego projektu Swift

  1. Wybierz projekt w XCode i kliknij prawym przyciskiem myszy -- > nowa grupa -- > nazwij ją "Git "
  2. Wybierz folder Git i kliknij prawym przyciskiem myszy -- > Dodaj nowy plik
  3. w zakładce IOS -- > Wybierz Inne --> pusty plik

Tutaj wpisz opis obrazka

  1. podaj nazwę pliku tutaj " .gitignore "

Tutaj wpisz opis obrazka

  1. Potwierdź nazwę i typ pliku

Tutaj wpisz opis obrazka

Oto struktura wyniku

Tutaj wpisz opis obrazka

  1. otwórz plik i prześlij poniżej kod

# file

#########################################################################
#                                                                       #
#       Title         - .gitignore file                                 #
#       For           - MAC OSX , Xcode7 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

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

########## Obj-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 repo. Instead, use fastlane to re-generate the

fastlane/report.xml
fastlane/screenshots

Cóż dzięki Adamowi jego odpowiedź Bardzo mi pomogła, ale i tak musiałem dodać kilka wpisów, ponieważ poszukiwany .gitignore dla

MAC OS X + XCode + Swift

Referencje: to i to

 8
Author: swiftBoy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:31:31

Dla XCode 5 dodaję:

####
# Xcode 5 - VCS metadata
#
*.xccheckout

From odpowiedź berika

 6
Author: Wanbok Choi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:32

Dodałem:

xcuserstate
xcsettings

I umieścił moje .plik gitignore u źródła mojego projektu.

Po popełnieniu i naciśnięciu. Pobiegłem:

git rm --cached UserInterfaceState.xcuserstate WorkspaceSettings.xcsettings

Zakopane w folderze poniżej:

<my_project_name>/<my_project_name>.xcodeproj/project.xcworkspace/xcuserdata/<my_user_name>.xcuserdatad/

Potem uruchomiłem git commit i push ponownie

 4
Author: user1524957,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-25 21:38:58

Używam następujących .plik gitignore wygenerowany w 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/
 4
Author: joserock85,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-19 19:36:55

Oto .gitignore, którego GitHub używa domyślnie dla nowych repozytoriów Xcode:

Https://github.com/github/gitignore/blob/master/Objective-C.gitignore

To może być rozsądnie poprawne w danym momencie.

 2
Author: funroll,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-28 17:45:25

Najlepszy ze wszystkich,

Gitignore.io

Idź i wybierz swój język, a następnie otrzymasz plik.

 1
Author: alicanbatur,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-06 07:45:02

Okazało się, że nawet jeśli dodać .gitignore i ... gitattribte*.plik pbxproj może zostać uszkodzony. Więc mamy prosty plan.

Każda osoba, która koduje w biurze, po prostu odrzuca zmiany wprowadzone w tym pliku. W commicie po prostu wymieniamy pliki, które są dodawane do źródła. A następnie wcisnąć na serwer. Nasz menedżer integracji wyciąga i widzi szczegóły commit i dodaje pliki do zasobów.

Kiedy zaktualizuje pilota każdy będzie zawsze miej kopię roboczą. W przypadku, gdy czegoś brakuje, poinformujemy go, aby dodał to i pociągnął jeszcze raz.

To nam się udało bez żadnych problemów.

 0
Author: Basil Abbas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-04 08:03:12

Zalecam użyciejoe do wygenerowania pliku .gitignore.

Dla projektu iOS uruchom następujące polecenie:

$ joe g osx,xcode > .gitignore

Wygeneruje to .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
 0
Author: damianesteban,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-15 17:48:07

Użyj https://www.gitignore.io / aby wygenerować, i dodać mac, cocoaPods plików jak poniżej:

## Mac
.DS_Store

## cocoaPods
Pod

## Build generated
build/
DerivedData/

## Various settings
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata/

## Other
*.moved-aside
*.xccheckout
*.xcscmblueprint

### Xcode Patch ###
*.xcodeproj/*
!*.xcodeproj/project.pbxproj
!*.xcodeproj/xcshareddata/
!*.xcworkspace/contents.xcworkspacedata
/*.gcno
 -1
Author: aircraft,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-24 05:06:21

konstrukcja stojaka .plik gitignore dla projektu 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/
 -1
Author: Rahul Singha Roy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-02 10:24:11