xcode - 如何从 Git 存储库中删除 'excluded' 文件?

标签 xcode git version-control xcode4 repository

我在做什么:

我在 Xcode 工作,不久前开始使用 Git。

按照惯例,有一些文件我不想包含在 Git 数据库中,它们与 Xcode 设置有关。我已经使用 Git 存储库有一段时间了,但现在想删除这些“编辑器”文件,因为它们会产生问题。


我是怎么做到的:

执行此操作的正确方法显然使用 .gitignore。相反,它是使用 .git/info/exclude。通过在 Xcode 中创建一个新项目并选择“使用 Git”选项,我发现它的默认设置应该是一个包含以下内容的 .git/info/exclude 文件:

.DS_Store

UserInterface.xcuserstate

所以我将这个排除文件复制到我正在处理的项目的同一个 git 位置,它似乎没问题。除了...


出了什么问题:

如果没有人工干预,这些文件当然不会从我当前的项目中删除/取消跟踪。因此,我尝试了以下方法,但不起作用并告诉我没有这样的文件:

git rm --cached .DS_Store
git rm --cached UserInterface.xcuserstate

但这些文件确实存在,如果我去提交我的 repo 分支,那么各种用户界面文件也想加入聚会。


问题:

那么,“排除”文件实际上在做什么?有没有办法使排除文件取消跟踪或轻松地将其自身应用于所有 repo 分支?

如果没有,我怎样才能让我的项目进入与我在第一个方 block 从 Xcode 创建 git 存储库时相同的状态?

最佳答案

您引用的第一个 git rm --cached 命令失败的一个原因是 .DS_Store 是一个目录。尝试:

git rm -r --cached .DS_Store

... 相反。您可能还想检查 git ls-files 是否在存储库中跟踪该目录中的实际文件。如果没有,那也可以解释您遇到错误。检查这些文件的大小写是否也完全正确。

(这些通常是有用的排除规则,我会顺便添加到 .gitignore。)

回答你的另一个问题:

So, what is the 'exclude' file actually doing? Is there a way to make the exclude file untrack or apply itself to all repo branches easily?

如果文件已经在存储库中被跟踪,您仍然需要手动取消暂存它们,无论它们是否被忽略/排除。本质上,您可以添加排除规则的各个地方都有 the same syntax and semantics .这些规则的优先级也在该文档中进行了描述,但本质上是:

  • 命令行中提供的排除规则具有最高优先级。
  • 然后是 .gitignore 文件,从当前目录开始,一直到顶层。
  • 然后使用.git/info/exclude
  • 最后,最低优先级的规则可能位于配置选项 core.excludesfile 指定的文件中。

关于xcode - 如何从 Git 存储库中删除 'excluded' 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7924366/

相关文章:

version-control - Mercurial 和 SQL Server Management Studio GUI 插件?

ios - UITableView 单元格内的 UICollectionViewCell 和自动布局

iphone - 由于 Orientation/Shake,UINavigationController 加载 View 不正确

ios - ScannerKit API - Apple Mach-O 链接器错误

git fast-import --export-marks 标志

version-control - 检索文件的旧版本而不更改工作副本父对象

version-control - perforce 中多个更改列表中的同一文件

ios - 有没有办法让 UIStackView 的 subview 在隐藏时参与自动布局?

git - 你如何 merge 两个git repos?

git - 使用 SSH 或 HTTPS 将 Gitlab 项目克隆到 Google Colab 实例