Мой .gitignore
файл, кажется, игнорируется Git - возможно, .gitignore
файл поврежден? Какой формат файла, локаль или культура ожидает Git?
Мой .gitignore
:
# This is a comment
debug.log
nbproject/
Выход из git status
:
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# debug.log
# nbproject/
nothing added to commit but untracked files present (use "git add" to track)
Я хотел бы debug.log
и nbproject/
не появляться в списке неотслеживаемых файлов.
С чего мне начать искать это исправить?
.gitignore
файл используетANSI
илиUTF-8
кодировку. Если он использует что-то ещеUnicode BOM
, возможно, Git не может прочитать файл.echo "file" > .gitignore
в PowerShell, файл имел кодировку UCS-2!git rm --cached debug.log nbproject/
Ответы:
Даже если вы еще не отслеживали файлы, Git, похоже, сможет «знать» о них даже после того, как вы добавите их в
.gitignore
.ВНИМАНИЕ: Сначала зафиксируйте ваши текущие изменения, иначе вы их потеряете.
Затем выполните следующие команды из верхней папки вашего Git-репозитория:
источник
Если кажется, что Git не замечает изменений, внесенных в ваш
.gitignore
файл, вы можете проверить следующие моменты:.gitignore
файл, который может помешать вашему локальномуКогда вы добавляете что-то в файл .gitignore, попробуйте это:
Если вы удалили что-то из файла .gitignore, и описанные выше шаги могут не сработать, если вы обнаружили, что вышеуказанные действия не работают, попробуйте следующее :
источник
git rm -r --cached .
работал для меняИсправлена. Хорошо, я создал файл .gitignore в Блокноте на Windows, и он не работал. Когда я просматривал файл .gitignore в Linux, он выглядел как организованный тарабарщина - возможно, Блокнот записал Unicode, а не ASCII или что-то еще 8-битное.
Таким образом, я переписал файл на своем компьютере с Linux, и когда я вернул его обратно в Windows, он отлично работает! Ура!
источник
Без добавления еще одного коммита в ваш проект, одной строки будет достаточно, чтобы
.gitignore
работать так, как предполагается:Это удалит их из хранилища, но сохранит их физически. На простом английском языке, он удаляет любую историю изменений, связанных с ними, а также не будет отслеживать их изменения в любом будущем коммите. Вы можете найти лучшее объяснение здесь .
источник
git rm -r --cached someFile.php
и это сработало как шарм :)Другая причина этой проблемы - пробелы или табуляции перед оператором:
Пример:
И, как указано в комментарии ниже, пробел также может быть проблемой:
источник
*.txt # Tex files
. Но git понимает: «Игнорируйте файлы с расширениемtxt
»Я заметил, что кодирование
.gitignore
имеет эффект - если файл был Unicode, он был проигнорирован, если это был ASCII, это не так.Обработать:
PS> git status
.gitignore
кодировка:PS> Get-FileEncoding .gitignore
PS> Set-Content .gitignore -Encoding Ascii -Value (Get-Content .gitignore)
PS> git status
источник
touch .gitignore
иecho ".db" >> .gitignore
маршрут через PowerShell. Я обнаружил, чтоecho ".db" >> .gitignore"
установка кодировки файла на UCS-2 LE-BOM, быстрое преобразование в ASCII и gitignore начал работать.Как и с другими решениями, совершить первый и быть в курсе , что вы будете терять не-привержен изменения.
У меня были лучшие результаты с этим:
Обратите внимание, что статус не должен иметь никаких измененных файлов сейчас.
источник
В моем случае это потому, что файлы уже существуют в хранилище, и я пытаюсь это игнорировать.
Вот что я сделал, чтобы решить эту проблему:
К тому времени любые изменения, которые я внес в эти файлы, были проигнорированы.
Я думаю, что вы не можете игнорировать файлы, которые уже существуют в хранилище.
источник
Все ответы здесь на самом деле обходные пути. Вам нужно создать файл .gitignore перед запуском
git init
. В противном случаеgit
вы никогда не узнаете, что вам нужно игнорировать эти файлы, потому что они уже отслежены.Если вы разрабатываете ежедневно, я советую вам добавить ваши привычные игнорируемые файлы в ваш
~/.gitignore_global
файл. Таким образом,git
вы уже будете знать, какие файлы вы (что означает «ваш пользователь», поскольку это файл в вашем домашнем каталоге) обычно игнорировать.источник
~/.gitignore_global
настраиваемое имяgit config --global core.excludesfile
Сначала запустите, чтобы увидеть, определен ли уже файл. Если нет, бегиgit config --global core.excludesfile ~/.gitignore_global
..gitignore
сначала: переименуйте отслеживаемый файл..gitignore
будет применяться, как если бы он был новым.Также проверьте каталог, куда вы положили
.gitignore
.Это должно быть в корне вашего проекта :
Не в
источник
Специально для пользователей Windows: если у вас есть неотслеживаемые файлы, а очистка / удаление кэшированных файлов не работает. Попробуйте открыть PowerShell и преобразовать файл .gitignore в кодировку UTF-8:
Вам нужно сделать это только один раз, чтобы закодировать файл .gitignore для этого каталога, и, поскольку этот файл закодирован правильно, всякий раз, когда вы редактируете файл в будущем, он должен работать. Я полагаю, что это связано с тем, что GitHub не собирается читать не кодировку UTF-8 для файла .gitignore. Насколько я знаю, эта проблема еще не решена для Windows. Это не слишком большая сделка, просто отладка, когда она не работает.
источник
.gitignore
Может возникнуть другая проблема , особенно для пользователя Windows. Git не нравится, когда вы называете.gitignore
(например,unity.gitignore
).Вы всегда захотите назвать его
.gitignore
или в Windows,.gitignore.
поскольку Windows думает, что вы пытаетесь переименовать его без имени файла.источник
Я только столкнулся с этой проблемой. Содержимое моего файла .gitignore продолжало появляться в списке неотслеживаемых файлов.
Я использовал это, чтобы создать файл игнорирования:
Оказывается, двойные цитаты были причиной для меня. Я удалил файл игнорирования и затем снова использовал команду без кавычек, и она работала, как и ожидалось. Мне не нужно было связываться с кодировкой файлов. Я на машине с Windows 10, используя Cmder .
Пример:
источник
Для меня ни один из предыдущих ответов не сработал. Мне пришлось скопировать
.gitignore
текст вexclude.txt
файл, найденный наПосле этого обновите свои изменения, и все неотслеживаемые файлы исчезнут. Совершайте как обычно.
источник
Моя проблема была (как предположил ОП) в поврежденном файле .gitignore. Я не верил в это и игнорировал эту возможность, пока все остальное не сработало. Повреждение не обнаружилось
vi
, но в начале файла было два байта, из-за которых файл .gitignore был проигнорирован. Для меня они появились только тогда, когда я набрал текстcat .gitignore
, который показал:Я понятия не имею, как они там оказались, но воссоздание файла устранило проблему. Шестнадцатеричный анализ поврежденного файла показал следующее:
источник
У меня была эта проблема с файлом .gitignore, содержащим эту строку:
Я только что понял, что на самом деле этот каталог является символической ссылкой на папку где-то еще:
В
lib/ext/
действительности Git ищет папку , но символическая ссылка - это файл , поэтому мояlib
папка не игнорируется.Я исправил это, заменив
lib/ext/
наlib/ext
мой файл .gitignore.источник
У меня была такая же проблема. Я считаю, что проблема была в несоответствии между CR и CR + LF. Я спрятал вещи в моем .gitignore, используя CMD (в Windows 7) и следующую команду:
Плохой:
И т.п.
Проблема заключалась в том, что эта команда не помещает правильный маркер конца строки, чтобы Git распознавал символы новой строки (CR или CR + LF, когда Git ожидает другого). Я решил проблему, вручную заменив каждую новую строку в Vim (Vim на помощь!), И она отлично работала.
Попробуйте отредактировать ваш .gitignore в Notepad ++ или Vim (в идеале). Даже если файл выглядит правильно, попробуйте заменить символы новой строки. Это звучит странно, я знаю, но это сработало для меня. : D
источник
Итак, в моем случае принятое решение не сработало, и то, что сработало, описано здесь:
Visual Studio 2013 игнорирует ваш файл .gitignore?
Короче говоря:
ms-persist.xml
источник
Стоит также обратить внимание: сохраняете ли вы файл .gitignore с правильными окончаниями строк?
Окна:
Если вы используете его в Windows, сохраняете ли вы его с окончаниями строки Windows? Не все программы будут делать это по умолчанию; Notepad ++ и многие PHP-редакторы по умолчанию используют строки Linux, поэтому файлы будут совместимы с сервером. Один из простых способов проверить это - открыть файл в блокноте Windows. Если все отображается в одной строке, то файл был сохранен с окончанием строки Linux.
Linux:
Если у вас возникли проблемы с файлом, работающим в среде Linux, откройте файл в редакторе, таком как Emacs или nano . Если вы видите непечатные символы, то файл был сохранен с окончанием строки Windows.
источник
Другая возможная причина - несколько экземпляров клиентов Git, запущенных одновременно . Например, «git shell» + «GitHub Desktop» и т. Д.
Это случилось со мной. Я использовал «GitHub Desktop» в качестве основного клиента, и он игнорировал некоторые новые настройки .gitignore: commit after commit:
Причина : редактор кода Visual Studio работал в фоновом режиме с тем же открытым хранилищем. Visual Studio Code имеет встроенный элемент управления Git, что создает некоторые конфликты.
Решение : перепроверьте несколько скрытых клиентов Git и одновременно используйте только один клиент Git, особенно при очистке кэша Git.
источник
Уже есть несколько отличных ответов, но моя ситуация была утомительной. Я отредактировал исходный код установленного программного обеспечения PLM (управление жизненным циклом продукта) на Win10 и впоследствии решил: «Я, вероятно, должен был сделать это git-репо».
Таким образом, опция кэширования не будет работать для меня напрямую. Публикация сообщений для тех, кто мог добавить контроль исходного кода ПОСЛЕ выполнения первоначальной работы И
.gitignore
не работает НО, возможно, вы боитесь потерять кучу работы, чтоgit rm --cached
не для вас.! ВАЖНО: Это действительно потому, что я слишком поздно добавил git в «проект», который слишком велик и, похоже, игнорирует мой .gitignore. У меня НЕТ коммитов, никогда. Я могу сойти с рук с этим :)
Сначала я только что сделал:
Затем мне нужно было представить картину моих изменений. Опять же, это установочный продукт, в который я внес изменения. Слишком поздно для первого коммита чистой ветки master. Итак, мне нужен список того, что я изменил, так как я установил программу, добавив
> changed.log
к одному из следующих:PowerShell
удар
Теперь у меня есть список того, что я изменил за последние десять дней (давайте не будем здесь вдаваться в лучшие практики, кроме как сказать, да, я сделал это для себя).
Для начала, теперь:
Мне пришлось сравнить мой измененный список с моим растущим .gitignore, работающим по
git status
мере того, как я его улучшал, но мои изменения в .gitignore читаются на ходу.Наконец, у меня есть список желаемых изменений! В моем случае это шаблон - некоторые темы работают вместе с несколькими xml-конфигурациями, специфичными для запуска системы dev с этим программным обеспечением, которую я хочу поместить в репозиторий, чтобы другие разработчики могли его получить и внести свой вклад ... Это будет наша основная ветка, так что совершать, толкать и, наконец, ФИЛИАЛ для новой работы!
источник
Просто удалите папку или файл, который был зафиксирован ранее в Git, с помощью следующей команды. Тогда файл gitignore будет отражать правильные файлы.
источник
Одна хитрость, не затронутая другими ответами, заключается в том, что файл .gitignore не будет работать, если у вас есть встроенные комментарии, например:
Итак, если у вас есть такие комментарии, измените их следующим образом:
источник
Также возможно, что вы отредактировали
.gitignore
файл с помощьюsudo
команды. Я столкнулся с той же проблемой, и при выполнении команд:git status
я все еще мог видеть файлы «должны быть проигнорированы».После редактирования
nano .gitignore
вместоsudo nano .gitignore
, я мог видеть правильное отражение.источник
Я создал .gitignore с помощью
echo "..." > .gitignore
PowerShell в Windows, потому что он не позволяет мне создавать его в Windows Explorer.Проблема в моем случае заключалась в кодировании созданного файла, и проблема была решена после того, как я изменил его на ANSI.
источник
У меня тоже есть такая же проблема на Ubuntu, я создал
.gitignore
из терминала, и у меня это работаетtouch .gitignore
источник
Мой не работал, потому что я буквально создал текстовый документ с именем .gitignore
Вместо этого создайте текстовый документ, откройте его в Notepad ++, затем сохраните как .gitignore
Убедитесь, что вы выбрали Все типы (*. *) Из выпадающего списка при сохранении.
Или в gitbash, просто используйте
touch .gitignore
источник
Если вы пользователь Notepad ++ , попробуйте сделать следующее:
Откройте файл .gitignore с помощью Notepad ++ и выполните:
Меню Правка → Преобразование EOL → Формат Windows → Сохранить .
Попробуйте использовать
git status
снова и посмотрите, работает ли он для вас.Я разместил ответ на подобный вопрос здесь .
источник
Для меня это была еще одна проблема. Мой файл .gitignore настроен на игнорирование всего, кроме того, что я говорю, чтобы не игнорировать. Вроде такой:
Теперь это, очевидно, означает, что я также говорю Git игнорировать сам файл .gitignore. Что не было проблемой, пока я не отслеживал файл .gitignore. Но в какой-то момент я зафиксировал сам файл .gitignore. Это привело к тому, что файл .gitignore был должным образом проигнорирован.
Поэтому добавление еще одной строки исправило это:
источник
Моя проблема заключалась в том, что я записывал файлы, чтобы игнорировать их в кавычках "", а не с косой чертой /.
Это не сработало и было проигнорировано git:
Это работало просто отлично:
Я также проверил свою кодировку файлов в Windows с помощью Notepad ++. Кодировка была установлена в UTF-8.
источник