XcodeプロジェクトのGit無視ファイル


回答:


693

以前はトップ投票の回答を使用していましたが、少し整理する必要があるため、ここでいくつかの改善を加えてXcode 4でやり直しました。

私はこのリストのすべてのファイルを調査しましたが、それらのいくつかはAppleの公式Xcodeドキュメントには存在しないため、Appleのメーリングリストに参加する必要がありました。

Appleは文書化されていないファイルを追加し続けており、ライブプロジェクトを破損させる可能性があります。このIMHOは受け入れがたいものであり、そのたびにバグを記録するようになりました。私は彼らが気にしないことを知っていますが、多分それは彼らを開発者をより公平に扱うことに恥をかかせるでしょう。


カスタマイズする必要がある場合は、フォークできる要点を以下に示します。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
#

61
あなたは(冗長性を気にしないで)無視し*.lockたりすべきではありませんPodfile.lock。すべてのワークスペースにまったく同じバージョンをインストールし、「最新バージョン」を使用したくない場合。
tvon 2013

8
Podfileの部分を削除しました。私は最初はそれを追加しませんでした。SOが誰か他の人が追加したと言って、不注意にそれを要点にコピー/貼り付けました。あらゆる/すべての混乱と誤解に対する私の謝罪。StackOverflowが誰でもあなたの回答を編集できるようにする方法が本当に嫌いです
Adam

5
行ごとにすべての説明行が表示されるようになりました。これにより、より明確になり、独自のプロジェクト用にカスタマイズしやすくなります。
アダム

3
@Adamご覧のとおり、このファイルにはVCSメタデータが含まれているため、VCSにチェックインしないでください。いいえ、そこには言及していないdeveloper.apple.comについてxccheckout。しかし、公式のgithubページでは、このファイルはすでにgitignoreファイルに含まれています。https://github.com/github/gitignore/blob/master/Objective-C.gitignore
スカイワインダー2013年

3
公式の説明がなければ、何も無視するつもりはありません。ほとんどの場合、人々がそうするたびに、遅かれ早かれ誰かのプロジェクトが破壊されます。危険すぎる-そこに行かないでください。そのため、無視しても安全であることを確認できる検証可能なソースがない限り、このファイルには何も追加しません。
アダム

276

Mercurialのこのガイドに基づいて、私の.gitignoreには以下が含まれます:

.DS_Store
*.swp
*~.nib

build/

*.pbxuser
*.perspective
*.perspectivev3

私はまた含めることを選択しました:

*.mode1v3
*.mode2v3

これは、このAppleメーリングリストの投稿によると、「ユーザー固有のプロジェクト設定」です。

Xcode 4の場合:

xcuserdata

52
.pbxuser / .perspective / * 。perspectivev3パターンは特に好きではありません。私は以下の.xcodeproj /!*。xcodeproj / project.pbxprojを好み ます* project.pbxproj以外の* .xcodeproj内のすべてを無視します。
リリーバラード

5
* .pbxuser、*。perspective、および* .perspectivev3は無視しません。リポジトリを複製するときに、これらの設定を元に戻したいからです。
ラジョ2009年

7
また、次のように「グローバル」なgitignoreファイルを作成できることを追加することもできます。git config --global core.excludesfile〜/ .gitignore
Jess Bowers

63
プロジェクトをコミットしたに.gitignoreファイルを追加したすべての人に注意したいと思います。無視したファイルは引き続き追跡されています。手動でgitから削除する必要がありますgit rm --cached <files>
pixelfreak

21
@SpacyRicochet:コメントを書いてから、コメントの書式が明らかに変更されました。したがって、イタリック。私のパターンは* .xcodeproj / *!*。xcodeproj / project.pbxprojのようになるはずです。もちろん、最近はワークスペースに合わせて調整する必要があります。
リリーバラード2012年

64

「ビルド」ディレクトリの除外について-

ビルドファイルをソースとは別のディレクトリに配置すると、私がそうするように、心配するツリーのフォルダーがなくなります。

これにより、コードの共有が簡単になり、バックアップの肥大化を防ぎ、他のXcodeプロジェクトへの依存関係がある場合でも(ビルドを互いに同じディレクトリに置く必要がある)

Github gist https://gist.github.com/708713から最新のコピーを取得できます

私の現在の.gitignoreファイルは

# 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

7
私はプロジェクトフォルダーの外側にビルドフォルダーを持っていますが、他のユーザーがプロジェクトをビルドすると、デフォルトでプロジェクト内に再作成されます。そのため、無視ファイルに追加する方がより良い解決策であることがわかりました。コミット。
ラジョ2009年

58

Xcode 4の場合も追加します。

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

78
を追加するだけxcuserdataで、両方が処理されます。
ma11hew28

7
何らかの理由で、接頭辞なしでxcuserdataを追加するだけではうまくいきませんでした。でも、そうすべきだと思った。奇数。
BastiBen 2013

24

私はこれらの提案をGithubで作成したGistに含めました:http : //gist.github.com/137348

遠慮なくフォークして、改善してください。


5
また、Githubの仲間の1人がいくつかの.gitignoreファイルを収集しています。ここでワンObjective-Cの固有のgithub.com/github/gitignore/blob/master/Objective-C.gitignoreは
program247365は

またThoughtbotの人々は、このプロジェクトを思い付いた- github.com/thoughtbot/liftoff、正気のデフォルトの.gitignoreファイルを追加し、その上に自分のブログの記事が表示されます。robots.thoughtbot.com/post/33796217972/...
program247365

14

GitHubの人々は、Xcodeプロジェクト用の網羅的で文書化された.gitignoreファイルを持っています。

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

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


5
これはすでに上記の回答の1つに投稿されています。私はそれが間違っている、疑わしくサポートされている(100を超える未処理のプルリクエスト!)、文書化されていないことを発見しました。それが「正しくない」という事実は、すべての中で最悪です。彼らは、限られた用途でのみ機能することを無視し、その理由や理由を説明していません。したがって、上記の私の答えは、バグを修正し、何が行われているか、なぜ行われたかを説明します。そのため、プロジェクトごとに知識に基づいた決定を下すことができます(新しいプロジェクトでは、いくつかのアイテムがそこにある理由を忘れることがあります-コメントは私が決めるのに役立ちます:))
アダム

@Adam:GitHub .gitignoreはXcode 6.3.2とSwiftに対応するように更新されたので、正しくなりました。それも文書化されています。
Eric

そうですが、データ破壊ファイルを公開して数か月または数年間その方法で保持することの問題、そして明らかにそれを適切にテストすることに煩わされないことは、コミュニティからのすべての信頼、信頼、尊敬を永久に犠牲にすることです。遅すぎる。
アダム

14

Objective-CとSwiftのgitignore.ioをチェックアウトする必要があります。

これが.gitignore私が使っているファイルです:

# 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

1
常にあなたの例を使用してください。素敵な設定!ありがとう!
Nikolay Shubenkov 2014年

私はしばらくgitignore.ioを使用していません- 使用していないかどうかを確認する価値があります。これを使用して、gitignore使用しているIDE /言語などのファイルを作成できます。cocoapodsセクションも追加されます。ブリリアント
アシュリーミルズ

12

AppCodeとXCodeの両方を使用しています。したがって.idea/無視する必要があります。

これをアダムに追加します .gitignore

####
# AppCode
.idea/

10

Xcodeを使用して.gitignoreファイルと.gitattributesファイルを自動作成するために作成したスクリプトを以下に示します。他の数人のものとハッキングしました。楽しんで!

Xcode-Git-User-Script

保証はありません...私はこれのほとんどを吸います-それであなた自身の危険で使ってください


10

.gitignoreファイルを追加する

Mac OS X + Xcode + Swift

これが私の.gitignoreファイルを私のSwiftプロジェクトに追加した方法です。

  1. Xcodeでプロジェクトを選択し、右クリック→ 新しいグループ →「Git」という名前を付けます
  2. Gitフォルダーを選択して右クリック→ 新しいファイルを追加
  3. iOSタブ内→ その他を選択→ 空のファイル

ここに画像の説明を入力してください

  1. ここにファイル名を付けます " .gitignore "

ここに画像の説明を入力してください

  1. ファイル名とタイプを確認

ここに画像の説明を入力してください

結果の構造は次のとおりです。

ここに画像の説明を入力してください

  1. ファイルを開き、以下のコードを通過します

# 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

さて、アダム感謝します。彼の答えは私を大いに助けました、しかし私は.gitignoreファイルが欲しかったのでさらにいくつかのエントリを追加する必要がありました:

Mac OS X + Xcode + Swift

参照:これこれ


1
非常に役立つ答え。XcodeでのGithubの設定の回答にリンクとして追加しました。
Suragch

9

鉱山は.bzrignoreですが、同じ考えです:)

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

tm_build_errorsは、TextMateを使用してプロジェクトをビルドするためのものです。Hagelinほど包括的ではありませんが、tm_build_errors行に投稿する価値があると思いました。



4

私は追加しました:

xcuserstate
xcsettings

.gitignoreファイルをプロジェクトのルートに配置しました。

コミットしてプッシュした後。次に実行しました:

git rm --cached UserInterfaceState.xcuserstate WorkspaceSettings.xcsettings

以下のフォルダに埋め込まれています:

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

次にgit commitを実行してもう一度プッシュします


それも追加しましたか?それとも、これはあなたがすることすべてですか?
hakre 2012

1
はい、両方を追加しましたが、xcusersateが主な問題のファイルでした。これを追加することが、コードをリモートでプッシュできる唯一の方法でした。そうしないと、プッシュする前にコミットが必要なフィードバックループに陥っていました。したがって、コミットすると、Xcode 4.5は再度コミットするように要求し、事前要件がコミットしているため、プッシュできません。
user1524957 2012年

4

私はgitignore.ioで生成された次の.gitignoreファイルを使用します。

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


2

これは.gitignore、GitHubがデフォルトで新しいXcodeリポジトリに使用するものです。

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

それはいつでも合理的に正しい可能性があります。


github .gitignoreファイルは、過去に問題があったすべてのファイルのコレクションです。現在、Xcodeプロジェクトをゼロから開始し、Xcodeにgitリポジトリを事前設定しておくと、.gitignoreで無視するのに余り多くはありません。私が無視したいのはxcuserdata / ...だけです。 。
2015年

GitHubは、私がgitignoresを探す最初の場所です:)
Ben Leggiero

1

答えのほとんどはXcode 4-5時代のものです。モダンなスタイルの無視ファイルをお勧めします。

# 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

https://github.com/BB9z/iOS-Project-Template/blob/master/.gitignoreから更新してください。


0

.gitignoreと.gitattribteを追加しても、*。pbxprojファイルが破損する可能性があることがわかりました。だから私たちは簡単な計画を持っています。

オフィスでコーディングを行うすべての人は、このファイルに加えられた変更を単に破棄します。コミットでは、ソースに追加されるファイルについて簡単に言及します。その後、サーバーにプッシュします。統合マネージャーは、コミットの詳細を取得して確認し、ファイルをリソースに追加します。

彼がリモートを更新すると、誰もが常に作業コピーを持っています。何かが足りない場合は、追加してもう一度プルするように通知します。

これは問題なく動作しました。


0

joeを使用して.gitignoreファイルを生成することをお勧めします。

iOSプロジェクトの場合、次のコマンドを実行します。

$ joe g osx,xcode > .gitignore

これが生成されます.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

-3

Xcodeプロジェクトの標準の.gitignoreファイルの構造>

.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ここにファイルを貼り付けるだけではなく、この件名には何も追加されません。
アシュリーミルズ

@AshleyMills最初にanswarを読んでから、コメントを追加してください.... answarは、標準的な構造/必要な構造....に不可欠です...
Rahul Singha Roy
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.