Xcode项目的Git忽略文件

当将gitXcode结合使用时,我应该在.gitignore中包含哪些文件?

320300 次浏览

基于Mercurial的本指南 my. gitignore包括:

.DS_Store*.swp*~.nib
build/
*.pbxuser*.perspective*.perspectivev3

我还选择包括:

*.mode1v3*.mode2v3

根据这个苹果邮件列表帖子,这是“用户特定的项目设置”。

对于Xcode 4:

xcuserdata

我的是一个. bzrignore,但它是相同的想法:)

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

tm_build_errors是当我使用TextMate来构建我的项目时。它不像Hagelin那么全面,但我认为它值得发布到tm_build_errors行。

关于“构建”目录排除-

如果您将构建文件放置在与源不同的目录中,就像我所做的那样,您不必担心树中的文件夹。

这也使共享代码,防止膨胀备份,甚至当您依赖于其他Xcode项目时(同时要求构建彼此位于同一目录中)的生活更简单

您可以从Github gisthttps://gist.github.com/708713获取最新副本

我当前的. gitignore文件是

# Mac OS X*.DS_Store
# Xcode*.pbxuser*.mode1v3*.mode2v3*.perspectivev3*.xcuserstateproject.xcworkspace/xcuserdata/
# Generated files*.o*.pyc

#Python modulesMANIFESTdist/build/
# Backup files*~.nib

对于Xcode 4,我还添加:

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

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

我之前使用的是投票最多的答案,但它需要一些清理,所以这里为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 belowxcuserdata/
# 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#

我补充说:

xcuserstatexcsettings

并将我的. gitignore文件放在我的项目的根目录中。

在承诺和推动之后。然后我跑了:

git rm --cached UserInterfaceState.xcuserstate WorkspaceSettings.xcsettings

与下面的文件夹一起埋葬:

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

然后我运行git提交并再次推送

我正在使用AppCode和XCode。所以.idea/应该被忽略。

将此附加到Adam的.gitignore

##### AppCode.idea/

我们确实发现即使您添加了. gitignore和. gitattribte,*. pbxproj文件也会损坏。所以我们有一个简单的计划。

每个在办公室编码的人都简单地丢弃对该文件所做的更改。在提交中,我们简单地提到添加到源中的文件。然后推送到服务器。我们的集成管理器比拉取并查看提交细节并将文件添加到资源中。

一旦他更新了遥控器,每个人都会有一个工作副本。如果缺少什么,我们会通知他添加它,然后再拉一次。

这对我们来说没有任何问题。

对于Xcode 5,我添加:

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

Berik的答案

您应该检查Objective-C和Swift的gitignore.io

这是我正在使用的.gitignore文件:

# Xcode.DS_Store*/build/**.pbxuser!default.pbxuser*.mode1v3!default.mode1v3*.mode2v3!default.mode2v3*.perspectivev3!default.perspectivev3xcuserdataprofile*.moved-asideDerivedData.idea/*.hmap*.xccheckout*.xcworkspace!default.xcworkspace
#CocoaPodsPods

以下是GitHub默认用于新Xcode存储库的.gitignore

它在任何给定时间都可能是合理正确的。

我使用gitignore.io中生成的以下. gitignore文件:

### Xcode ###build/*.pbxuser!default.pbxuser*.mode1v3!default.mode1v3*.mode2v3!default.mode2v3*.perspectivev3!default.perspectivev3xcuserdata*.xccheckout*.moved-asideDerivedData*.xcuserstate

### Objective-C #### Xcode#build/*.pbxuser!default.pbxuser*.mode1v3!default.mode1v3*.mode2v3!default.mode2v3*.perspectivev3!default.perspectivev3xcuserdata*.xccheckout*.moved-asideDerivedData*.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/

添加. gitignore文件 for

macosx+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 generatedbuild/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.perspectivev3xcuserdata
## 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.AppleDesktopNetwork Trash FolderTemporary 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.xmlfastlane/screenshots

好吧,多亏了亚当。他的回答对我帮助很大,但我仍然需要添加更多条目,因为我想要一个. gitignore文件:

Mac OS X+Xcode+Swift

参考:这个这个

最棒的是,

gitignore.io

去选择你的语言,然后它会给你文件。

我建议使用生成.gitignore文件。

对于iOS项目,运行以下命令:

$ joe g osx,xcode > .gitignore

它将生成这个.gitignore

.DS_Store.AppleDouble.LSOverride
Icon._*
.DocumentRevisions-V100.fseventsd.Spotlight-V100.TemporaryItems.Trashes.VolumeIcon.icns
.AppleDB.AppleDesktopNetwork Trash FolderTemporary Items.apdisk
build/DerivedData
*.pbxuser!default.pbxuser*.mode1v3!default.mode1v3*.mode2v3!default.mode2v3*.perspectivev3!default.perspectivev3xcuserdata
*.xccheckout*.moved-aside*.xcuserstate

Xcode项目的standerd. gitignore文件的结构>

.DS_Store.DS_Store?._*.Spotlight-V100.TrashesIcon?ehthumbs.dbThumbs.dbbuild/*.pbxuser!default.pbxuser*.mode1v3!default.mode1v3*.mode2v3!default.mode2v3*.perspectivev3!default.perspectivev3!default.xcworkspacexcuserdataprofile*.moved-asideDerivedData.idea/

大多数答案来自Xcode 4-5时代。我推荐一个现代风格的忽略文件。

# Xcode Project**/*.xcodeproj/xcuserdata/**/*.xcworkspace/xcuserdata/**/.swiftpm/xcode/xcuserdata/**/*.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist**/*.xcworkspace/xcshareddata/*.xccheckout**/*.xcworkspace/xcshareddata/*.xcscmblueprint**/*.playground/**/timeline.xctimeline.idea/
# BuildScripts/build/build/DerivedData/*.ipa
# CarthageCarthage/
# CocoaPodsPods/
# fastlanefastlane/report.xmlfastlane/Preview.htmlfastlane/screenshotsfastlane/test_outputfastlane/sign&cert
# CSV*.orig.svn
# Other*~.DS_Store*.swp*.save._**.bak

保持更新:https://github.com/BB9z/iOS-Project-Template/blob/master/.gitignore

<强>gitignore.io:为您的项目创建有用的. gitignore文件

  • 示例(macOSObjective-CSwiftSwiftPackageManagerCarthage
  • 在终端中使用的步骤(请参阅YouTube视频
    1. 创建Git全局配置别名(仅限一次)

      git config --global alias.ignore '!gi() { curl -L -s https://www.gitignore.io/api/$@ ;}; gi'
    2. 输入项目目录

      cd <the project directory>
    3. 生成. gitignore文件

      git ignore macOS,Objective-C,Swift,SwiftPackageManager,Carthage >.gitignore
    4. 添加并提交. gitignore文件

      git add .gitignoregit commit -m "Add .gitignore file"

如果有人需要一个标准的gitignore文件作为一个简单的方法。

导航到您的项目后,只需在cmd/终端中运行这一行。

npx gitignore Objective-C

这将创建最新的gitignore文件

iOS发展

git ignore swift,ios >.gitignore

对于macOS开发

git ignore swift,macos >.gitignore