Git没有忽略.gitignore中的某些Xcode文件

age*_*217 6 git xcode

我是Git的新手,我正在使用它来备份我正在处理的iPhone项目.我在更新时添加了Git应该忽略的文件列表(xcode文件),但是当我去提交更改时,这个.perspectivev3(在我的.gitignore中)文件会一直显示.有谁知道这是为什么,或者我做错了什么?

谢谢,

扎克

这是我的.gitignore文件中的内容:

# xcode noise
*.mode1v3
*.pbxuser
*.perspective 
*.perspectivev3
*.pyc 
*~.nib/
build/*

# Textmate - if you build your xcode projects with it
*.tm_build_errors

# old skool
.svn

# osx noise
.DS_Store
profile
Run Code Online (Sandbox Code Playgroud)

Von*_*onC 10

如果它一直显示在git状态,则必须先添加或提交.

你需要

  • git rm --cached该文件,以便git status不再列出它(它刚刚添加,但尚未提交).
  • git rm该文件,如果它以前已提交(例如,请参阅此问题)


jps*_*ain 9

您可以使用

$ git rm --cached ./whatever1.txt
Run Code Online (Sandbox Code Playgroud)

在事情已经受版本控制之后.

事实上,如果您在版本控制下有"whatever1.txt"并且想要从git中删除它,但是让您的工作树不受干扰,那么只需执行以下操作:

$ git rm --cached ./whatever1.txt
$ echo /whatever1.txt >> ${PROJECT_ROOT}/.gitignore
$ git status   # this will now show ./whatever1 as "deleted" (from git, not your working tree, and will show gitignore as modified or created)
$ git commit -a
Run Code Online (Sandbox Code Playgroud)

就是这样.

只能使用

$ git rm
Run Code Online (Sandbox Code Playgroud)

当你想从工作树 git repo中删除文件时.

CAVEAT:您可能使用此方法的方案是从git中删除特定于IDE的文件.在此示例中,"whatever1"表示您要删除的IDE文件.如果您正在处理一个包含多个人的项目,并且您将此变更集推送到共享仓库,那么当他们提取此变更集时,他们的"./whatever1"文件将被删除.对于接收端的人来说,这里很容易做到的事情是:

$ git checkout 1215ef -- ./file-you-want-to-restore ./another-file ./another-etc
Run Code Online (Sandbox Code Playgroud)

(其中1215ef表示删除前的最后一次提交)

这具有恢复在拉动之前最后一次提交时出现的那些文件的效果.完成后,这些文件将是安全的,并且不会显示为未提交的b/c,它们将被排除在gitignore之外.

祝好运!