Git忽略Xcode项目的文件

时间:2008-09-08 11:07:50

标签: xcode git macos version-control gitignore

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

21 个答案:

答案 0 :(得分:670)

默认:请不要批准对此答案进行修改。到目前为止,每个编辑都是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
#

答案 1 :(得分:275)

根据this guide for Mercurial我的.gitignore包含:

.DS_Store
*.swp
*~.nib

build/

*.pbxuser
*.perspective
*.perspectivev3

我还选择了包括:

*.mode1v3
*.mode2v3
根据{{​​3}},

是“用户特定的项目设置”。

对于Xcode 4:

xcuserdata

答案 2 :(得分:61)

关于'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

答案 3 :(得分:55)

对于Xcode 4,我还添加:

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

答案 4 :(得分:24)

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

随意分叉,让它变得更好。

答案 5 :(得分:14)

您应该结帐gitignore.io以获取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

答案 6 :(得分:14)

GitHub的人员为Xcode项目提供了详尽且记录在案的.gitignore文件:

斯威夫特: https://github.com/github/gitignore/blob/master/Swift.gitignore

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

答案 7 :(得分:12)

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

将此附加到Adam的.gitignore

####
# AppCode
.idea/

答案 8 :(得分:10)

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

Xcode-Git-User-Script

没有保证......我最常吮吸这个 - 所以请自担风险使用

答案 9 :(得分:9)

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

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

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

答案 10 :(得分:8)

添加 .gitignore文件
  

MAC OS X + XCode + Swift

这就是我将.gitignore文件添加到我的Swift项目中的方法

  1. 在XCode和右键单击中选择项目 - > 新群组 - >将其命名为" Git "
  2. 选择Git文件夹,然后右键单击 - > 添加新文件
  3. iOS标签 - >内选择其他 - > 空文件
  4. enter image description here

    1. 在此处提供文件名" .gitignore "
    2. enter image description here

      1. 确认文件名并输入
      2. enter image description here

        这是结果结构

        enter image description here

        1. 打开文件并通过以下代码
        2. # 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
          

          thanks to Adam,他的答案对我帮助很大,但我仍然需要添加更多条目,因为我想要.gitignore

          MAC OS X + XCode + Swift

          参考文献:thisthis

答案 11 :(得分:6)

对于XCode 5,我添加:

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

来自Berik's Answer

答案 12 :(得分: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并再次推送

答案 13 :(得分: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/

答案 14 :(得分:3)

最重要的是,

  

gitignore.io

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

答案 15 :(得分:2)

这里是GitHub默认使用的.gitignore新Xcode存储库:

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

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

答案 16 :(得分:0)

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

  • 示例(macOS Objective-C Swift SwiftPackageManager Carthage
  • 终端使用步骤(参考the YouTube Video
    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 .gitignore
      git commit -m "Add .gitignore file"
      

答案 17 :(得分:0)

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

答案 18 :(得分: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

答案 19 :(得分:0)

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

每个在办公室编码的人只会丢弃对此文件所做的更改。在提交中,我们简单地提到了添加到源中的文件。然后推送到服务器。我们的集成管理器不会提取并查看提交详细信息并将文件添加到资源中。

一旦他更新了遥控器,每个人都将拥有一份工作副本。如果缺少某些东西,我们会通知他将其添加进去,然后再拉一次。

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

答案 20 :(得分:-2)

  

用于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/