Git忽略Xcode项目的文件
将Git与Xcode结合使用时,我应该在.gitignore
包含哪些文件?
Mods:请不要批准对这个答案的编辑。 到目前为止,每个编辑都是不正确的,并导致数据丢失。 请单独留下这个答案!
如果你想编辑这个答案…不要。 首先阅读全部内容 – 有一个简单的方法可以让你自己创build分支,如果这还不够,请对其进行评论。
我以前使用顶级答案,但它需要一些清理,所以这里重新做了Xcode 4,有一些改进。
我已经研究了这个列表中的每一个文件,但其中有几个文件不存在于苹果官方的xcode文档中,所以我不得不在苹果的邮件列表上。
苹果继续添加未公开的文件,可能会破坏我们的现场项目。 这恕我直言,是不能接受的,我现在开始logging每次他们这样做的错误。 我知道他们并不在乎,但也许会让他们中的一个更为公平地对待开发者。
如果您需要自定义,请点击这里: 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 # # cf http://www.westwind.com/reference/os-x/invisibles.html .DS_Store # cf http://www.westwind.com/reference/os-x/invisibles.html .Trashes # cf 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 (eg 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) # cf 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 # cf 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: # # cf http://guides.cocoapods.org/using/using-cocoapods.html#what-is-a-podfilelock # cf http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control # #!Podfile.lock # # RUBY: # # cf http://yehudakatz.com/2010/12/16/clarifying-the-roles-of-the-gemspec-and-gemfile/ # #!Gemfile.lock # # IDEA: # # cf https://www.jetbrains.com/objc/help/managing-projects-under-version-control.html?search=workspace.xml # #.idea/workspace.xml # # TEXTMATE: # # -- UNVERIFIED: cf http://stackoverflow.com/a/50283/153422 # #tm_build_errors #### # UNKNOWN: recommended by others, but I can't discover what these files are #
根据Mercurial的这个指南,我的.gitignore包括:
.DS_Store *.swp *~.nib build/ *.pbxuser *.perspective *.perspectivev3
我也select包括:
*.mode1v3 *.mode2v3
根据这个苹果邮件列表文章 ,这是“用户特定的项目设置”。
而对于Xcode 4:
xcuserdata
关于“构build”目录排除 –
如果您将构build文件放在与源代码不同的目录中,那么您不需要担心树中的文件夹。
这也让分享你的代码变得更简单,防止臃肿的备份,甚至当你有其他的Xcode项目的依赖(当需要构build在相同的目录中)
您可以从Github的要点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
对于Xcode 4,我还补充道:
YourProjectName.xcodeproj/xcuserdata/* YourProjectName.xcodeproj/project.xcworkspace/xcuserdata/*
我在Github上创build的Gist中包含了这些build议: http : //gist.github.com/137348
随意叉,并使其更好。
我正在使用AppCode和XCode。 所以.idea/
应该被忽略。
追加到亚当的.gitignore
#### # AppCode .idea/
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
我是一个.bzrignore,但同样的想法:)
.DS_Store *.mode1v3 *.pbxuser *.perspectivev3 *.tm_build_errors
tm_build_errors是用于当我使用TextMate来build立我的项目。 不像哈格林那么全面,但我认为这是值得张贴的tm_build_errors线。
下面是我使用Xcode自动创build.gitignore和.gitattributes文件的脚本。我把它和其他一些人的东西一起砍了。 玩的开心!
Xcode中,Git的用户脚本
没有保证…我最多吸这个 – 所以使用在自己的危险
您应该检查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
添加.gitignore文件
MAC OS X + XCode + Swift
这是如何,我已经将.gitignore文件添加到我的Swift项目
- select你在XCode中的项目并右键单击 – > 新build组 – >将其命名为“ Git ”
- selectGit文件夹并右键单击 – > 添加新文件
- 在iOS选项卡 – >select其他 – > 空文件
- 在这里给文件名“ .gitignore ”
- 确认文件名称和types
这里是结果结构
- 打开文件和以下代码
# 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
非常感谢Adam ,他的回答帮了我很多,但是我仍然需要添加更多条目,就像我想要的.gitignore
MAC OS X + XCode + Swift
参考文献: 这和这个
对于XCode 5我添加:
#### # Xcode 5 - VCS metadata # *.xccheckout
从贝里克的答案
我使用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/
我补充说:
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提交并再次推送
下面是GitHub默认为新的Xcode存储库使用的.gitignore
:
https://github.com/github/gitignore/blob/master/Objective-C.gitignore
在任何时候都可能是合理的。
最好的,
gitignore.io
去select你的语言,然后它会给你的文件。
我们确实发现即使添加.gitignore和.gitattribte,也可能会损坏* .pbxproj文件。 所以我们有一个简单的计划。
每个在办公室编码的人只是放弃对这个文件所作的修改。 在提交中,我们简单地提到添加到源文件中的文件。 然后推送到服务器。 我们的集成pipe理器比拉取并看到提交细节并将文件添加到资源中。
一旦他更新了远程,每个人都将有一个工作副本。 如果有什么东西丢失,然后我们通知他join,然后再次拉。
这已经解决了我们没有任何问题。