繁体   English   中英

如何从Git存储库中删除“排除”的文件?

[英]How can I remove 'excluded' files from a Git 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分支,那么各种用户界面文件也想加入聚会。


问题:

那么,'排除'文件究竟在做什么? 有没有办法让排除文件不被攻击或轻松地将自己应用于所有的回购分支?

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

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

git rm -r --cached .DS_Store

......而是。 您可能还希望使用git ls-files检查存储库中是否跟踪了该目录中的实际文件。 如果没有,那也可以解释你得到一个错误。 检查您是否也正确地获得了这些文件的大小写。

(这些通常很有用,不包括我偶然添加到.gitignore规则。)

回答你的另一个问题:

那么,'排除'文件究竟在做什么? 有没有办法让排除文件不被攻击或轻松地将自己应用于所有的回购分支?

如果已在存储库中跟踪文件,则仍需要手动取消它们,无论它们是否被忽略/排除。 从本质上讲,您可以添加排除规则的各个地方都具有相同的语法和语义 这些规则的优先级也在该文档中描述,但基本上:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM