Git не игнорирует определенные файлы Xcode в .gitignore - PullRequest
6 голосов
/ 21 июля 2010

Я новичок в 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

Ответы [ 3 ]

10 голосов
/ 21 июля 2010

Если он продолжает появляться в состоянии git, он должен быть добавлен или зафиксирован ранее.

Вам необходимо

  • git rm --cached этого файла, чтобыgit status чтобы больше не перечислять его (он был просто добавлен, но еще не зафиксирован).
  • git rm этот файл, если он был ранее зафиксирован (см. этот вопрос, например )
9 голосов
/ 20 июля 2011

Вы можете использовать

$ git rm --cached ./whatever1.txt

после того, как что-то уже находится под контролем версии.

На самом деле, если у вас есть "what1.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

когда вы хотите удалить файл из рабочего дерева И из репозитория git.

CAVEAT: Вероятный сценарий, который вы бы использовали, это для удаления специфичных для IDE файлов из git. В этом примере «what1» представляет ваши IDE-файлы, которые вы удаляете. Если вы работаете над проектом с несколькими людьми и помещаете этот набор изменений в общий репозиторий, тогда их файлы «./whwhat1» будут удалены, когда они получат этот набор изменений. Легче всего сделать это для людей на принимающей стороне:

$ git checkout 1215ef -- ./file-you-want-to-restore ./another-file ./another-etc

(где 1215ef представляет последний коммит перед удалением)

Это приводит к восстановлению тех файлов, которые присутствовали при их последнем коммите перед извлечением. После того как они это сделают, эти файлы будут в безопасности и не будут отображаться как незафиксированные, потому что они попадут под исключение gitignore.

Удачи!

3 голосов
/ 21 июля 2010

.gitignore применяется только для неотслеживаемых файлов. Если у вас есть файлы, добавленные в git, которые иначе не отслеживаются из-за .gitignore, они все равно будут частью репозитория.

Просто удалите файлы из хранилища, которое вам больше не нужно:

git rm *.perspectivev3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...