Git忽略Xcode项目的文件

Hag*_*lin 866 git macos version-control xcode gitignore

.gitignoreGitXcode结合使用时,我应该包含哪些文件?

Ada*_*dam 682

修改:请不要批准对此答案进行编辑.到目前为止,每个编辑都是INCORRECT并导致数据丢失.请单独留下这个答案!


如果你想编辑这个答案......不要.首先阅读整个事情 - 你有一个简单的方法来制作自己的分支,如果这还不够,那么就对它进行评论.


我以前使用的是最高投票的答案,但它需要一些清理,所以在这里重新完成Xcode 4,并做了一些改进.

我已经研究了这个列表中的每个文件,但Apple的官方xcode文档中没有一些文件存在,所以我不得不继续使用Apple邮件列表.

Apple继续添加未记录的文件,可能会破坏我们的实时项目.这个恕我直言是不可接受的,现在我每次都开始记录它的bug.我知道他们并不关心,但也许他们中的一个会更公平地对待开发者.


如果你需要自定义,这里有一个要点,你可以分叉: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
#
Run Code Online (Sandbox Code Playgroud)

  • 你不应该忽略`*.lock`或`Podfile.lock`(更不用说冗余).您希望在所有工作区中安装完全相同的版本,您不需要"最新版本". (56认同)
  • 我删除了Podfile部分.我最初没有添加,SO说其他人添加了它,我不小心将其复制/粘贴到要点中.对于任何/所有混淆和误解,我深表歉意.我真的不喜欢StackOverflow允许任何人编辑你的答案的方式:(. (8认同)
  • 嗨!更新Xcode5:只需将`*.xccheckout`添加到此文件即可. (6认同)
  • 现在一行一行地解释一切.这应该使它更清晰,并使您更容易为自己的项目定制. (4认同)
  • @Adam正如我所看到的,此文件包含VCS元数据,因此不应该检入VCS.不,在`developer.apple.com`上没有关于`xccheckout`的提及.但是在官方的github页面上,这个文件已经包含在gitignore文件中了.`的https:// github.com/github上/ gitignore /斑点/主/目标-C.gitignore` (3认同)
  • 没有官方描述,我们不会忽视任何事情.几乎每次人们都这样做,它迟早会破坏某人的项目.方式太危险 - 不要去那里.所以我拒绝在此文件中添加任何内容,除非我有一个可验证的来源确认可以安全地忽略! (3认同)
  • @skywinder 根据 SO 上的这个答案,您可能错了:http://stackoverflow.com/a/19260712/153422 - 该文件很重要。我不会忽略文件,直到你能证明它们不相关——如果我们弄错了,损害是巨大的。“官方 github 页面”始终是错误的(您真的不应该使用它),并且绝对不是正确使用的论据! (2认同)
  • @ user770该网站上的文件是临界恶意的.无论是谁做了这件事,他们都没有想到他们正在做什么,或者想搞砸其他人的项目.我一直在说:DO.不.采取.随机.互联网.GITIGNORES.从.IDIOTS.谁.别.说明.EVERY.线! (2认同)

Hag*_*lin 276

根据Mercurial的指南,我的.gitignore包括:

.DS_Store
*.swp
*~.nib

build/

*.pbxuser
*.perspective
*.perspectivev3
Run Code Online (Sandbox Code Playgroud)

我还选择包括:

*.mode1v3
*.mode2v3
Run Code Online (Sandbox Code Playgroud)

根据这个Apple邮件列表帖子,这是"用户特定的项目设置".

而对于Xcode 4:

xcuserdata
Run Code Online (Sandbox Code Playgroud)

  • 我想提醒那些在他们提交项目后添加了.gitignore文件**的人:你忽略的那些文件仍然被跟踪.你必须使用`git rm --cached <files>`手动将它们从git中删除 (61认同)
  • 我并不特别喜欢*.pbxuser/*.perspective/*.perspectivev3模式.我更喜欢以下*.xcodeproj/*!*.xcodeproj/project.pbxproj除了project.pbxproj之外,它忽略*.xcodeproj中的所有内容. (52认同)
  • @SpacyRicochet:自从我写评论以来,评论格式显然已经发生了变化.因此斜体.我的模式应该看起来像\*.xcodeproj /\*!\*.xcodeproj/project.pbxproj.当然,现在您需要针对工作空间进行调整. (21认同)
  • 另外你可能想要添加一个像你这样的"全局"gitignore文件:git config --global core.excludesfile~/.gitignore (7认同)
  • 我不会忽略*.pbxuser,*.perspective和*.perspectivev3,因为我喜欢在克隆我的存储库时保留这些设置. (5认同)
  • 如果您可能有脚本或您不想忽略的名为build的内容,请使用build /仅排除名为build的目录. (3认同)
  • 在Xcode 4中,似乎唯一需要担心的文件是xcuserdata目录和.DS_Store,其余部分在.gitignore中不需要.我有一个从未在XCode 3中打开的活动项目,但仅在v4中,并且我的文件层次结构中没有其他文件.它使用Storyboard而不是.xib来查看视图.我的配置也是正常的,即没有"怪异"的自定义,例如将构建目录从其默认位置移动. (3认同)
  • 评论@KevinBallard是非常有用的,除了它包含一个小的疏忽.`*.xcworkspace/*!*.xcworkspace /!*.xcworkspace/contents.xcworkspacedata`工作,因为它首先将项目文件夹中的每个**文件列入黑名单**,然后将文件夹本身列入白名单,然后将项目文件列入白名单.这样,整个文件夹不会被列入黑名单,这会导致git完全跳过它. (3认同)
  • 使用xcuserdata很糟糕,因为它会阻止您的xcschemes目录受版本控制. (2认同)
  • 根据http://stackoverflow.com/a/9552687/599884和https://github.com/github/gitignore/blob/master/Objective-C.gitignore,忽略xcworkspace似乎是一个好主意 (2认同)

Abi*_*ern 62

关于'build'目录排除 -

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

这也使得共享代码的生活变得更简单,防止膨胀的备份,甚至当你对其他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
Run Code Online (Sandbox Code Playgroud)

  • 我在项目文件夹之外有build文件夹,但是当其他用户构建项目时,默认情况下会在项目中重新创建 - 所以我发现将它添加到ignore文件是一个更好的解决方案,否则它会在他们的提交. (7认同)

Vla*_*vic 58

对于Xcode 4,我还添加:

YourProjectName.xcodeproj/xcuserdata/*
YourProjectName.xcodeproj/project.xcworkspace/xcuserdata/*
Run Code Online (Sandbox Code Playgroud)

  • 如果你只是添加`xcuserdata`,那么两者都需要处理. (78认同)
  • 出于某种原因,只添加没有前缀的xcuserdata对我来说不起作用.但我认为应该这样做.奇. (7认同)

pro*_*365 24

我在Github上创建的Gist中包含了这些建议:http://gist.github.com/137348

随意分叉,并使其更好.

  • 还有一个Github人员收集了一些.gitignore文件.这是Objective-C特定的一个 - https://github.com/github/gitignore/blob/master/Objective-C.gitignore (5认同)

Eri*_*ric 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

  • 这已经发布到上面的答案之一.我发现它是:不正确,有问题支持(超过100个未完成的请求!),并且没有记录.它是"不正确"的事实是最糟糕的; 他们忽略了只适用于一小部分用途,并没有解释什么或为什么!因此:我上面的答案,它纠正了他们的错误并解释了正在做什么和为什么,所以你可以逐个项目地做出有根据的决定(在一个新项目中,我有时会忘记为什么有些项目在那里 - 评论帮我决定:)) (5认同)

onm*_*133 14

你应该检查gitignore.io for Objective C和Swift

这是.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
Run Code Online (Sandbox Code Playgroud)


BB9*_*B9z 14

大多数答案来自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/

# Build
**/.build/
**/Build/
DerivedData/
*.ipa

# Carthage
Carthage/

# 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
Run Code Online (Sandbox Code Playgroud)

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


Wan*_*hoi 12

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

把这个附加到亚当的 .gitignore

####
# AppCode
.idea/
Run Code Online (Sandbox Code Playgroud)


小智 10

下面是我使用Xcode自动创建.gitignore和.gitattributes文件的脚本......我和其他一些人一起攻击它.玩得开心!

Xcode中,Git的用户脚本

没有保证......我最常吮吸这个 - 所以使用你自己的危险


Dav*_*wer 9

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

.DS_Store
*.mode1v3
*.pbxuser
*.perspectivev3
*.tm_build_errors
Run Code Online (Sandbox Code Playgroud)

tm_build_errors适用于我使用TextMate构建项目的时候.不像Hagelin那么全面,但我认为值得发布tm_build_errors行.


swi*_*Boy 8

添加.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
Run Code Online (Sandbox Code Playgroud)

感谢亚当,他的回答对我帮助很大,但我仍不得不添加几个条目,我想的.gitignore为

MAC OS X + XCode + Swift

参考文献:这个


Wan*_*hoi 6

对于XCode 5,我添加:

####
# Xcode 5 - VCS metadata
#
*.xccheckout
Run Code Online (Sandbox Code Playgroud)

Berik的答案


use*_*957 5

我已经添加:

xcuserstate
xcsettings
Run Code Online (Sandbox Code Playgroud)

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

在提交和推动之后。然后我跑了:

git rm --cached UserInterfaceState.xcuserstate WorkspaceSettings.xcsettings
Run Code Online (Sandbox Code Playgroud)

埋在下面的文件夹中:

<my_project_name>/<my_project_name>.xcodeproj/project.xcworkspace/xcuserdata/<my_user_name>.xcuserdatad/
Run Code Online (Sandbox Code Playgroud)

然后我运行 git commit 并再次推送


ali*_*tur 5

最好的,

gitignore.io

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