首页 / 知识

Git忽略Xcode项目的文件

2023-04-14 13:10:00

Git ignore file for Xcode projects

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


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

我已经研究了这个列表中的每个文件,但Apple的官方Xcode文档中没有其中的几个,所以我不得不继续使用Apple邮件列表。

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

如果你需要自定义,这里有一个要点,你可以分叉:https://gist.github.com/3786883

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
#########################
# .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
#

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

1
2
3
4
5
6
7
8
9
.DS_Store
*.swp
*~.nib

build/

*.pbxuser
*.perspective
*.perspectivev3

我还选择包括:

1
2
*.mode1v3
*.mode2v3

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

而对于Xcode 4:

1
xcuserdata

关于'build'目录排除 -

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

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

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

我目前的.gitignore文件是

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 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

对于Xcode 4,我还添加:

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


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

随意分叉,并使其更好。


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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 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

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


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

将此附加到Adam的.gitignore

1
2
3
####
# AppCode
.idea/

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

Xcode中,Git的用户脚本

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


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

1
2
3
4
5
.DS_Store
*.mode1v3
*.pbxuser
*.perspectivev3
*.tm_build_errors

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


添加.gitignore文件

Mac OS X + Xcode + Swift

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

  • 在Xcode中选择项目并右键单击New Group将其命名为"Git"
  • 选择Git文件夹,然后右键单击"添加新文件"
  • 在iOS选项卡中,选择其他空文件
  • Enter image description here

  • 在这里给出文件名".gitignore"
  • Enter image description here

  • 确认文件名和类型
  • Enter image description here

    这是结果结构:

    Enter image description here

  • 打开文件并通过以下代码
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    # 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
    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

    参考文献:这和这个


    对于Xcode 5,我添加:

    1
    2
    3
    4
    ####
    # Xcode 5 - VCS metadata
    #
    *.xccheckout

    从Berik的答案


    我已经添加:

    1
    2
    xcuserstate
    xcsettings

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

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

    1
    git rm --cached UserInterfaceState.xcuserstate WorkspaceSettings.xcsettings

    埋在下面的文件夹:

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

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


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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    ### 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/


    最好的,

    gitignore.io

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


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

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

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


    大多数答案来自Xcode 4-5时代。我建议使用现代风格的忽略文件。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    # 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


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

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

    $ joe g osx,xcode > .gitignore

    它会生成这个.gitignore

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    .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

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

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

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

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


    A Structure of a standerd .gitignore file for Xcode project >

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    .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/


    文件项目重做文档

    最新内容

    相关内容

    热门文章

    推荐文章

    标签云

    猜你喜欢