Gitignore не работает
Мой файл .gitignore
не работает по какой-либо причине, и никакое количество Google не удалось его исправить. Вот что я имею:
*.apk
*.ap_
*.dex
*.class
**/bin/
**/gen/
.gradle/
build/
local.properties
**/proguard/
*.log
Это в каталоге master
, который является моим git репо. Я запускаю git 1.8.4.2, потому что я на MacBook с OSX 10.8.6.
Ответы
Ответ 1
Файлы/папка в вашем контроле версий не будут просто .gitignore
только потому, что вы добавили их в .gitignore
. Они уже находятся в хранилище, и вы должны удалить их. Вы можете просто сделать это с этим:
(Не забудьте зафиксировать все, что вы изменили, прежде чем сделать это.)
git rm -rf --cached .
git add .
Это удалит все файлы из хранилища и добавит их обратно (на этот раз с соблюдением правил в вашем .gitignore
).
Ответ 2
Чтобы отследить один файл, который уже был добавлен/инициализирован в ваш репозиторий, то есть прекратите отслеживать файл, но не удалите его из вашей системы: git rm --cached filename
Чтобы отследить все файлы, которые теперь находятся в вашем .gitignore
:
Сначала выполните любые незавершенные изменения кода, а затем запустите эту команду:
git rm -r --cached .
Это удаляет любые измененные файлы из индекса (промежуточной области), а затем запускает:
git add .
Зафиксировать его:
git commit -m ".gitignore is now working"
Ответ 3
После того, как вы немного побродили в кроличью дыру, пытаясь ответить на этот вопрос (возможно, потому, что я должен был сделать это в проекте визуальной студии), я нашел, что более простой путь состоял в
-
Вырезать и вставить файлы Я больше не хочу отслеживать во временное расположение
-
Зафиксировать "удаление" этих файлов
-
Зафиксируйте модификацию .gitignore
, чтобы исключить временно перемещенные файлы.
-
Переместите файлы обратно в папку.
Я нашел, что это самый прямой способ сделать это (по крайней мере, в визуальной студии, или я бы предположил, что другая среда с поддержкой среды IDE, например, Android Studio), без случайной съемки в ногу с довольно распространенным git rm -rf --cached .
, после чего проект визуальной студии, над которым я работал, не загружался.
Ответ 4
В моем случае это было пустое место в начале файла, которое ясно проявилось, когда я открыл файл в "Блокноте", не было очевидным в коде Visual Studio.
Ответ 5
В моем случае причиной были пробелы в конце строк .gitignore. Поэтому следите за пробелами в .gitignore!
Ответ 6
Я решил свою проблему следующим образом:
Прежде всего, я пользователь Windows, но я столкнулся с аналогичной проблемой. Итак, я публикую свое решение здесь.
Есть одна простая причина, почему иногда .gitignore не работает так, как должно. Это связано с поведением преобразования EOL.
Вот быстрое решение для этого
Правка> Преобразование EOL> Формат Windows> Сохранить
Вы можете винить в этом настройки вашего текстового редактора.
Например:
Поскольку я являюсь разработчиком Windows, я обычно использую Notepad++ для редактирования своего текста, в отличие от пользователей Vim.
Итак, что происходит, когда я открываю свой файл .gitignore, используя Notepad++, он выглядит примерно так:
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# See https://help.github.com/ignore-files/ for more about ignoring files.
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
*.dll
*.force
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
Если я открою тот же файл с помощью Блокнота по умолчанию, это то, что я получу
## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. ## ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore # See https://help.github.com/ignore-files/ for more about ignoring files. # User-specific files *.suo *.user *.userosscache
Итак, вы, возможно, уже догадались, посмотрев на результат. Все в .gitignore стало одной строкой, и поскольку в начале есть ##, он действует так, как будто все прокомментировано.
Способ исправить это прост: просто откройте файл .gitignore с помощью Notepad++, а затем выполните следующие действия.
Правка> Преобразование EOL> Формат Windows> Сохранить
В следующий раз, когда вы откроете тот же файл в блокноте по умолчанию, все должно быть правильно отформатировано. Попробуйте и посмотрите, работает ли это для вас.
Ответ 7
Работает ли git reset --hard
для всех? Я не говорю, что это хорошее решение, это просто казалось, что я работаю в первый раз, когда пробовал.
Ответ 8
Для пользователей iOS игнорирование файлов в GitHub через .gitignore объясняется здесь:fooobar.com/questions/152084/...
Ответ 9
Я использовал что-то для генерации общего .gitignore
для меня, и я столкнулся с этим. После прочтения ответа @Ozesh я открыл в VS Code, потому что в правом нижнем углу есть хороший индикатор, показывающий тип концов строки. Это был LF, поэтому я перешел на CRLF, как и предлагалось, но без игры в кости.
Затем я посмотрел рядом с окончаниями строки и заметил, что она была сохранена с использованием UTF16. Поэтому я восстановил с помощью UTF8 кодирования вуаля, это сработало. Я не думал, что CRLF имел значение, поэтому я, конечно, изменил его на LF, и он все еще работал.
Конечно, это не было проблемой OP, так как он уже зафиксировал файлы, поэтому они уже были проиндексированы, но подумал, что я поделюсь, если кто-то еще наткнется на это.
TLDR; Если вы еще не зафиксировали файлы, и .gitignore по-прежнему не соблюдается, проверьте кодировку файлов и убедитесь, что это UTF8, а если это не работает, то, возможно, попробуйте поиграть с окончаниями строк.