Wcześniej korzystałem z najczęściej głosowanej odpowiedzi, ale wymaga ona trochę uporządkowania, więc tutaj została ona wykonana ponownie dla Xcode 4, z pewnymi ulepszeniami.
Przeszukałem każdy plik na tej liście, ale kilka z nich nie istnieje w oficjalnej dokumentacji Apple Xcode, więc musiałem przejść na listy mailingowe Apple.
Apple nadal dodaje nieudokumentowane pliki, co może uszkodzić nasze projekty na żywo. To IMHO jest niedopuszczalne, a teraz zacząłem rejestrować błędy za każdym razem, gdy to robią. Wiem, że ich to nie obchodzi, ale może zawstydzi jednego z nich bardziej sprawiedliwym traktowaniem programistów.
########################## .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#
Nie powinieneś ignorować *.lockani Podfile.lock(nie wspominając o redundancji). Chcesz dokładnie takie same wersje zainstalowane we wszystkich obszarach roboczych, nie chcesz „najnowszej wersji”.
tvon
8
Usunąłem część Podfile. Nie dodałem tego pierwotnie, SO mówi, że ktoś inny to dodał i niedbale skopiowałem / wkleiłem to w sedno. Przepraszam za wszelkie zamieszanie i nieporozumienia. Naprawdę nie podoba mi się sposób, w jaki StackOverflow pozwala każdemu edytować twoje odpowiedzi :(.
Adam
5
Teraz jest objaśnienie WSZYSTKO, linia po linii. Powinno to uczynić go bardziej zrozumiałym i ułatwić dostosowanie do własnych projektów.
Adam
3
@Adam Jak widzę, ten plik zawiera metadane VCS i dlatego nie powinien być rejestrowany w VCS. Nie, nie ma żadnych wzmianek na developer.apple.comtemat xccheckout. Ale na oficjalnej stronie github ten plik jest już zawarty w pliku gitignore. https://github.com/github/gitignore/blob/master/Objective-C.gitignore
skywinder
3
Bez oficjalnego opisu nie będziemy niczego ignorować. Niemal za każdym razem, gdy ludzie to robią, prędzej czy później jest to czyjś projekt uszkodzony. Zbyt niebezpieczne - nie idź tam. Dlatego odmawiam dodania czegokolwiek do tego pliku, chyba że mam możliwe do zweryfikowania źródło potwierdzające, że można go bezpiecznie zignorować!
Nie podoba mi się szczególnie wzorce .pbxuser / .perspective / *. Perspectivev3. Zdecydowanie wolę następujące .xcodeproj / ! *. Xcodeproj / project.pbxproj, który ignoruje wszystko w * .xcodeproj z wyjątkiem project.pbxproj.
Lily Ballard
5
Nie ignoruję * .pbxuser, * .perspective i * .perspectivev3, ponieważ lubię utrzymywać te ustawienia z powrotem podczas klonowania mojego repozytorium.
lajos
7
Możesz także dodać, że możesz utworzyć „globalny” plik gitignore w następujący sposób: git config --global core.excludesfile ~ / .gitignore
Jess Bowers
63
Chciałbym ostrzec wszystkich, którzy dodali plik .gitignore po popełnieniu projektu: te pliki, które ignorujesz, są nadal śledzone. Będziesz musiał usunąć je z gita ręcznie, używającgit rm --cached <files>
pixelfreak
21
@SpacyRicochet: Formatowanie komentarzy najwyraźniej uległo zmianie od czasu napisania komentarza. Stąd kursywą. Mój wzór ma wyglądać jak * .xcodeproj / *! *. Xcodeproj / project.pbxproj. Oczywiście w dzisiejszych czasach musisz dostosować go do obszarów roboczych.
Lily Ballard
64
Jeśli chodzi o wykluczenie katalogu „build” -
Jeśli umieścisz swoje pliki kompilacji w innym katalogu niż źródło, tak jak ja, nie będziesz mieć folderu w drzewie, o który mógłbyś się martwić.
Ułatwia to również udostępnianie kodu, zapobiegając rozdętym kopiom zapasowym, a nawet gdy masz zależności od innych projektów Xcode (wymagając, aby kompilacje znajdowały się w tym samym katalogu)
Mam folder kompilacji poza folderem projektu, ale gdy inni użytkownicy budują projekt, domyślnie jest on ponownie tworzony w projekcie - więc odkryłem, że dodanie go do pliku ignorowania jest lepszym rozwiązaniem, w przeciwnym razie zostanie odczytany w ich zobowiązuje się.
Zostało to już opublikowane w jednej z powyższych odpowiedzi. Okazało się, że jest: niepoprawny, wątpliwie obsługiwany (ponad 100 zaległych żądań ściągania!) I nieudokumentowany. Fakt, że jest „niepoprawny”, jest najgorszy ze wszystkich; zignorowali, że działa tylko na wąski zestaw zastosowań i nie wyjaśnili, co i dlaczego! Stąd: moja odpowiedź powyżej, która koryguje ich błędy ORAZ wyjaśnia, co się dzieje i dlaczego, abyś mógł podejmować wykształcone decyzje na podstawie projektu po projekcie (w nowym projekcie czasami zapominam, dlaczego niektóre elementy tam są - komentarze pomagają mi zdecydować :))
Adam,
@Adam: GitHub .gitignorezostał zaktualizowany do Xcode 6.3.2 i Swift, więc jest teraz poprawny. Jest to również udokumentowane.
Eric
tak, ale problem z opublikowaniem pliku niszczącego dane i trzymaniem go w ten sposób przez miesiące lub lata - i najwyraźniej nie zadaje sobie trudu, aby go właściwie przetestować - polega na tym, że trwale poświęcasz całą wiarę, zaufanie i szacunek społeczności. Za późno.
zawsze używaj swojego przykładu. fajne ustawienia! Dzięki!
Nikolay Shubenkov
Od jakiegoś czasu nie korzystałem z gitignore.io - warto sprawdzić, jeśli nie. Możesz go użyć do utworzenia gitignorepliku dla dowolnego IDE / języka itp., Którego używasz. Doda nawet sekcję cocoapods. Genialny
Ashley Mills,
12
Używam zarówno AppCode, jak i XCode. Więc.idea/ należy je zignorować.
Oto skrypt, który utworzyłem, aby automatycznie utworzyć pliki .gitignore i .gitattributes przy użyciu Xcode ... Zhakowałem go razem z kilkoma innymi osobami. Baw się dobrze!
Oto jak dodałem plik .gitignore do mojego projektu Swift:
Wybierz projekt w Xcode i kliknij prawym przyciskiem myszy → Nowa grupa → nazwij go „ Git ”
Wybierz folder Git i kliknij prawym przyciskiem myszy → Dodaj nowy plik
Na karcie iOS → wybierz Inne → pusty plik
Podaj tutaj nazwę pliku „ .gitignore ”
Potwierdź nazwę i typ pliku
Oto struktura wyników:
Otwórz plik i wklej poniższy kod
# 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 \rIcon# 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.AppleDesktopNetworkTrashFolderTemporaryItems.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/CheckoutsCarthage/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
Cóż, dzięki Adamowi . Jego odpowiedź bardzo mi pomogła, ale wciąż musiałem dodać kilka kolejnych wpisów, ponieważ chciałem pliku .gitignore dla:
Tm_build_errors jest, gdy używam TextMate do budowy mojego projektu. Nie jest tak kompleksowy jak Hagelin, ale pomyślałem, że warto opublikować wpis dla linii tm_build_errors.
Czy też to dodałeś? A może to wszystko, co robisz?
hakre
1
Tak, dodałem oba, ale xcusersate był głównym przestępczym plikiem. Dodanie tego było jedynym sposobem na zdalne przesłanie kodu. W przeciwnym razie utknąłem w pętli sprzężenia zwrotnego, która wymagała zatwierdzenia przed wypchnięciem. Więc zatwierdzasz, a następnie Xcode 4.5 poprosi cię o ponowne zatwierdzenie i nigdy nie będziesz w stanie naciskać, ponieważ wstępne wymaganie jest zatwierdzone.
user1524957,
4
Korzystam z następującego pliku .gitignore wygenerowanego 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/
Plik github .gitignore to zbiór wszystkich plików, z którymi mieliśmy problemy w przeszłości. W tej chwili, jeśli zaczynasz projekt Xcode od zera i pozwól Xcode wstępnie skonfigurować repozytorium git, nie ma już zbyt wiele do zignorowania w .gitignore: Jedyną rzeczą, którą wolę zignorować, jest xcuserdata / ... to pomaga nie zaśmiecać twoich zobowiązań .
crosscode
GitHub to pierwsze miejsce, w którym szukam gitignores :)
Ben Leggiero
1
Większość odpowiedzi pochodzi z ery Xcode 4-5. Polecam zignorować plik w nowoczesnym stylu.
Odkryliśmy, że nawet jeśli dodasz .gitignore i .gitattribte, plik * .pbxproj może zostać uszkodzony. Mamy więc prosty plan.
Każda osoba, która koduje w biurze, po prostu odrzuca zmiany wprowadzone w tym pliku. W zatwierdzeniu po prostu wspominamy o plikach dodawanych do źródła. A następnie pchnij na serwer. Nasz menedżer integracji pobiera i widzi szczegóły zatwierdzenia oraz dodaje pliki do zasobów.
Po aktualizacji pilota wszyscy będą mieli kopię roboczą. Jeśli czegoś brakuje, informujemy go, aby go dodał, a następnie pociągnął jeszcze raz.
Czym różni się to od poprzednich odpowiedzi? Nie wklejaj gitignoretutaj swojego pliku, to nic nie doda do tego tematu.
Ashley Mills,
@AshleyMills Proszę najpierw przeczytać Answar, a następnie dodać komentarz .... Answar jest dla standardowej struktury / wymaganych .... które są niezbędne, aby mieć ...
https://www.gitignore.io/api/swift,xcode,Cobjective-c,osx
Odpowiedzi:
Wcześniej korzystałem z najczęściej głosowanej odpowiedzi, ale wymaga ona trochę uporządkowania, więc tutaj została ona wykonana ponownie dla Xcode 4, z pewnymi ulepszeniami.
Przeszukałem każdy plik na tej liście, ale kilka z nich nie istnieje w oficjalnej dokumentacji Apple Xcode, więc musiałem przejść na listy mailingowe Apple.
Apple nadal dodaje nieudokumentowane pliki, co może uszkodzić nasze projekty na żywo. To IMHO jest niedopuszczalne, a teraz zacząłem rejestrować błędy za każdym razem, gdy to robią. Wiem, że ich to nie obchodzi, ale może zawstydzi jednego z nich bardziej sprawiedliwym traktowaniem programistów.
Jeśli chcesz dostosować, oto treść, którą możesz rozwidlić: https://gist.github.com/3786883
źródło
*.lock
aniPodfile.lock
(nie wspominając o redundancji). Chcesz dokładnie takie same wersje zainstalowane we wszystkich obszarach roboczych, nie chcesz „najnowszej wersji”.developer.apple.com
tematxccheckout
. Ale na oficjalnej stronie github ten plik jest już zawarty w pliku gitignore.https://github.com/github/gitignore/blob/master/Objective-C.gitignore
W oparciu o ten przewodnik dla Mercurial mój .gitignore obejmuje:
Wybrałem także:
które zgodnie z tym postem na liście mailingowej Apple są „specyficznymi dla użytkownika ustawieniami projektu”.
A dla Xcode 4:
źródło
git rm --cached <files>
Jeśli chodzi o wykluczenie katalogu „build” -
Jeśli umieścisz swoje pliki kompilacji w innym katalogu niż źródło, tak jak ja, nie będziesz mieć folderu w drzewie, o który mógłbyś się martwić.
Ułatwia to również udostępnianie kodu, zapobiegając rozdętym kopiom zapasowym, a nawet gdy masz zależności od innych projektów Xcode (wymagając, aby kompilacje znajdowały się w tym samym katalogu)
Możesz pobrać aktualną kopię z listy Github https://gist.github.com/708713
Mój aktualny plik .gitignore to
źródło
Do Xcode 4 dodaję również:
źródło
xcuserdata
, to zajmie się obydwoma.Zawarłem te sugestie w Gist utworzonym na Github: http://gist.github.com/137348
Możesz go rozwidlić i ulepszyć.
źródło
Ludzie GitHub mają wyczerpujące i udokumentowane pliki .gitignore dla projektów Xcode:
Swift: https://github.com/github/gitignore/blob/master/Swift.gitignore
Cel C: https://github.com/github/gitignore/blob/master/Objective-C.gitignore
źródło
.gitignore
został zaktualizowany do Xcode 6.3.2 i Swift, więc jest teraz poprawny. Jest to również udokumentowane.Powinieneś sprawdzić gitignore.io dla Objective-C i Swift.
Oto
.gitignore
plik, którego używam:źródło
gitignore
pliku dla dowolnego IDE / języka itp., Którego używasz. Doda nawet sekcję cocoapods. GenialnyUżywam zarówno AppCode, jak i XCode. Więc
.idea/
należy je zignorować.dołącz to do Adama
.gitignore
źródło
Oto skrypt, który utworzyłem, aby automatycznie utworzyć pliki .gitignore i .gitattributes przy użyciu Xcode ... Zhakowałem go razem z kilkoma innymi osobami. Baw się dobrze!
Xcode-Git-User-Script
Żadnych gwarancji ... Zassałem co najwyżej - wykorzystaj więc na własne ryzyko
źródło
Dodanie pliku .gitignore dla
Oto jak dodałem plik .gitignore do mojego projektu Swift:
Oto struktura wyników:
Cóż, dzięki Adamowi . Jego odpowiedź bardzo mi pomogła, ale wciąż musiałem dodać kilka kolejnych wpisów, ponieważ chciałem pliku .gitignore dla:
Mac OS X + Xcode + Swift
Referencje: to i to
źródło
Mój jest .bzrignore, ale to ten sam pomysł :)
Tm_build_errors jest, gdy używam TextMate do budowy mojego projektu. Nie jest tak kompleksowy jak Hagelin, ale pomyślałem, że warto opublikować wpis dla linii tm_build_errors.
źródło
Do Xcode 5 dodaję:
Od odpowiedzi Berika
źródło
Dodałem:
i umieściłem mój plik .gitignore w katalogu głównym mojego projektu.
Po popełnieniu i pchnięciu. Potem pobiegłem:
pochowany z folderem poniżej:
Potem uruchomiłem git commit i ponownie nacisnąłem
źródło
Korzystam z następującego pliku .gitignore wygenerowanego w gitignore.io:
źródło
Najlepszy ze wszystkich,
Idź i wybierz swój język, a wtedy otrzymasz plik.
źródło
Oto
.gitignore
domyślnie używane przez GitHub nowe repozytoria Xcode:https://github.com/github/gitignore/blob/master/Objective-C.gitignore
Prawdopodobnie w dowolnym momencie będzie to poprawne.
źródło
Większość odpowiedzi pochodzi z ery Xcode 4-5. Polecam zignorować plik w nowoczesnym stylu.
Aktualizuj go od: https://github.com/BB9z/iOS-Project-Template/blob/master/.gitignore
źródło
Odkryliśmy, że nawet jeśli dodasz .gitignore i .gitattribte, plik * .pbxproj może zostać uszkodzony. Mamy więc prosty plan.
Każda osoba, która koduje w biurze, po prostu odrzuca zmiany wprowadzone w tym pliku. W zatwierdzeniu po prostu wspominamy o plikach dodawanych do źródła. A następnie pchnij na serwer. Nasz menedżer integracji pobiera i widzi szczegóły zatwierdzenia oraz dodaje pliki do zasobów.
Po aktualizacji pilota wszyscy będą mieli kopię roboczą. Jeśli czegoś brakuje, informujemy go, aby go dodał, a następnie pociągnął jeszcze raz.
Sprawdziło się to dla nas bez żadnych problemów.
źródło
Polecam użycie Joe do wygenerowania
.gitignore
pliku.W przypadku projektu iOS uruchom następujące polecenie:
$ joe g osx,xcode > .gitignore
Wygeneruje to
.gitignore
:źródło
źródło
gitignore
tutaj swojego pliku, to nic nie doda do tego tematu.