我是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
答案 0 :(得分:10)
如果它一直显示在git状态,它必须在之前添加或提交。
你需要
git rm --cached
该文件,以便git status
不再列出它(它刚刚添加,但尚未提交)。git rm
该文件,如果之前已提交(请参阅this question for instance)答案 1 :(得分:9)
您可以使用
$ git rm --cached ./whatever1.txt
在某些内容已经受版本控制之后。
事实上,如果您在版本控制下有“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
就是这样。
仅使用
$ git rm
当你想从工作树 AND git repo中删除文件时。
CAVEAT:您可能使用此方法的方案是从git中删除特定于IDE的文件。在此示例中,“whatever1”表示您要删除的IDE文件。如果您正在处理一个包含多个人的项目并将此变更集推送到共享仓库,那么当他们提取此变更集时,他们的“./whatever1”文件将被删除。对于接收端的人来说,这里很容易做到的事情是:
$ git checkout 1215ef -- ./file-you-want-to-restore ./another-file ./another-etc
(其中1215ef代表删除前的最后一次提交)
这具有恢复在拉取之前最后一次提交时出现的那些文件的效果。完成后,这些文件将是安全的,不会显示为未提交的b / c,它们将被排除在gitignore之外。
祝你好运!答案 2 :(得分:3)
.gitignore仅适用于未跟踪的文件。如果你有git-add'ed文件因为.gitignore而未被跟踪,那么它们仍然是存储库的一部分。
只需从您不想要的存储库中删除文件:
git rm *.perspectivev3