- Не игнорируются файлы в .gitignore
- 4 ответа 4
- Если файлы только добавлены, но еще не включены в коммит
- Если игнорируемые файлы уже есть в последнем коммите
- .gitignore не работает
- 24 ответов
- Исправлено: Gitignore не работает —
- Что такое .gitignore?
- Что заставляет .gitignore не работать?
- Решение 1. Проверка файла .gitignore
- Решение 2. Проверка файла, который вы пытаетесь игнорировать
- Решение 3. Повторное добавление файлов в репозиторий
Не игнорируются файлы в .gitignore
Читаю книгу Test-Driven Development with Python, во второй главе описывается создание git-репозитория. Я следую всем инструкциям, но мой файл .gitignore не игнорирует записанное в нём. В чём проблема?
4 ответа 4
Подозреваю, что вы добавили файлы в индекс раньше, чем начали игнорировать. То есть до той git add . , который на скриншоте, была еще одна такая команда. Чтобы узнать точно, не хватает git status перед добавлением.
Если файл уже был добавлен, то изменение в .gitignore не вызывает удаления из текущего индекса (что логично и безопасно).
Если файлы только добавлены, но еще не включены в коммит
В данном конкретном случае именно так и есть. При этом достаточно удалить их из индекса. Данная команда возвращает индекс к HEAD, то есть состоянию последнего коммита.
Вы можете заметить, что сам Git предлагает использовать другую команду:
В данном случае эти команды эквивалентны. Такое дублирование появилось в результате эволюционного развития функционала Git. Это в том числе отражено в документации и в сообщениях Git: где-то рекомендуется reset , где-то rm —cached .
Если игнорируемые файлы уже есть в последнем коммите
Возможна и такая ситуация, на всякий случай я опишу и ее. Здесь reset не сработает, нужен rm . Аргумент —cached заставляет Git удалить файл из индекса, но не трогать рабочую область. То есть он буквально индексирует удаление файла, хотя этого удаления не было. Если сделать это с файлом, который не игнорируется, то после коммита он будет в категории неотслеживаемых (untracked).
Если нужно убрать целую игнорируемую папку, добавляем ключ -r:
Эта удобная команда применяет rm ко всем файлам, указанным в .gitignore :
Теперь результат команды git rm нужно зафиксировать коммитом.
Источник
.gitignore не работает
мой .gitignore файл, похоже, игнорируется git-может ли .gitignore файл будет поврежден? Какой формат файла, язык или культура ожидает git?
вывод git status :
Я бы debug.log и nbproject/ не отображается в списке игнорируемых файлов.
где я должен начать искать, чтобы это исправить?
24 ответов
даже если вы не отслеживали файлы до сих пор, git, похоже, может «знать» о них даже после их добавления в .gitignore .
Примечание : сначала зафиксируйте текущие изменения, или вы их потеряете.
затем выполните следующие команды из верхней папки вашего репозитория git:
когда .файл gitignore не работает (добавление чего-то.gitignore файл или удаление чего-то из .gitignore file), вы можете проверить следующие советы:
- вы должны обратить внимание на глобальный файл gitignore, который иногда может повлиять на ваш gitignore.
когда вы добавляете что-то.gitignore файл, как человек, который ответил этот вопрос первый:
- при удалении что-то от .файла.gitignoreвышеуказанные шаги не работает. Вы можете попробовать это:
«тип файла» означает файл или тип файла, который вы хотите удалить из .файла.gitignore Вы хотите, чтобы тип файла отслеживался снова.
исправлено. Хорошо, я создал .файл gitignore в блокноте на windows, и он не работал. Когда я смотрел .файл gitignore в linux выглядел как организованная тарабарщина — возможно, Блокнот написал unicode, а не ascii или что-то еще 8-битное.
поэтому я переписал файл на моем linux box, и когда я вытащил его обратно в windows, он отлично работает! Ура!
без добавления еще одной фиксации к вашему проекту одной строки будет достаточно, чтобы сделать .gitignore работайте так, как положено:
это удалит его из репозитория, но все равно сохранит их физически, на простом английском языке, он удалит любую историю изменений, связанных с ними, а также не будет отслеживать их изменение в любом будущем фиксации. Лучшее объяснение, которое вы можете найти здесь.
еще одна причина этой проблемы-пробелы или вкладки перед инструкцией:
и, как указано в комментарии ниже, конечное пространство может быть проблемой также
Я заметил, что кодировка .gitignore был эффект-если файл был Unicode, он был проигнорирован, если это был ASCII, это не было.
- Проверка статуса: PS> git status
- создайте функцию для Get-FileEncoding
- тест .gitignore с кодировкой: PS> Get-FileEncoding .gitignore
- изменить кодировку в ASCII: PS> Set-Content .gitignore -Encoding Ascii -Value (Get-Content .gitignore)
- подтвердить: PS> git status
Как и в других решениях, сначала зафиксируйте и имейте в виду, что вы потеряете любые не зафиксированные изменения.
У меня были лучшие результаты с этим:
обратите внимание, что в статусе не должно быть измененных файлов.
все ответы здесь на самом деле обходные пути. Вам нужно создать .gitignore файл перед запуском git init , иначе git никогда не будет знать, что вам нужно игнорировать эти файлы, потому что они уже отслеживались.
если вы развиваетесь ежедневно, я советую вам добавить ваши привычные игнорируемые файлы в ваш . Вот кстати, git уже будете знать, какие файлы Вы (имеется в виду «пользователь», так как это файл в вашем домашнем каталоге) обычно игнорировать.
также проверить каталог, где тебя положить .гитюдного Он должен быть в корень вашего проекта:
в моем случае, это потому, что файлы уже существуют в репозитории, и я пытаюсь игнорировать его.
Это то, что я сделал, чтобы исправить проблему:
- скопируйте файлы во временную папку
- удалите их из моей папки проекта.
- зафиксируйте изменения, которые удаляют эти файлы из РЕПО
- повторно добавил Эти файлы в мою папку проекта
к тому времени любые изменения, которые я сделал в этих файлах, были игнорируемый.
Я думаю, вы не можете игнорировать файлы, которые уже существуют в репо.
есть еще одна проблема с .gitignore Это может произойти, особенно для пользователя windows, git не нравится, когда вы называете .gitignore (например, unity.gitignore ). Вы всегда захотите назвать его .gitignore , или на windows, .gitignore. как Windows думает, что вы пытаетесь переименовать его без имени.
Я только что столкнулся с этой проблемой. Содержание внутри меня .файл пример продолжали появляться в списке игнорируемых файлов.
я использовал это, чтобы создать файл ignore:
echo «node_modules» > .gitignore
оказывается, что двойные котировки были причиной проблемы для меня. Я удалил файл игнорирования, а затем снова использовал команду без кавычек, и она работала так, как ожидалось. Мне не нужно было возиться с кодировкой файла. Я на машине Win10, используя Cmder.
echo node_modules > .gitignore
для меня ни один из вышеперечисленных ответов не работал. Я должен был скопировать .gitignore текст найти
после этого обновите свои изменения, и все неотслеженные файлы исчезнут. Совершать как обычно.
У меня была такая же проблема. Я считаю, что проблема заключалась в несоответствии CR vs CR+LF. Я прятала вещи в своей .gitignore с помощью cmd (в windows 7) и следующей команды:
проблема заключалась в том, что эта команда не помещает правильный маркер конца строки для Git для распознавания новых строк (либо CR, либо CR+LF, когда git ожидает другой.) Я решил проблему, вручную заменив каждую новую строку в vim (vim на помощь!) и это сработало отлично.
попробуйте отредактировать .gitignore в Notepad++ или vim (в идеале), даже если файл выглядит правильно отформатированным, попробуйте заменить новые строки. Звучит странно, я знаю, но сработало на меня. : D
у меня была эта проблема, с a .gitignore, содержащий эту строку:
Я только что понял, что на самом деле этот каталог является символической ссылкой на папку где-то еще:
в строке lib/ext/ , git на самом деле ищет папку, но символическая ссылка-это , поэтому моя папка lib не игнорируется.
я исправил это путем замены lib/ext/ by lib/ext на мой .гитюдного.
специально для пользователей Windows: Если вы распаковали файлы и очистка/удаление кэшированных файлов не работает. Попробуйте открыть powershell и преобразовать .файл gitignore в кодировке UTF-8.
1)$Myfile = Get-Content ..gitignore
2)$Myfile = / Out-файл-кодировка «UTF8».gitignore
нужно только сделать это один раз, чтобы закодировать .файл gitignore для этого каталога, и поскольку файл затем кодируется правильно всякий раз, когда вы редактируете файл в в будущем это должно сработать. Я считаю, что это связано с глюком, когда GitHub не собирается читать кодировку не UTF-8 для a .файла.gitignore Насколько мне известно, эта проблема еще не решена для Windows. Не слишком большое дело, просто боль для отладки, когда она не работает.
моя проблема была (как предложил ОП) коррумпированной .файла.gitignore Я не верил в это и игнорировал возможность, пока все остальное не провалилось. Коррупция не появился в vi , но в начале файла было два байта, которые вызвали .файл gitignore следует игнорировать. Для меня они появились только тогда, когда я набрал cat .gitignore , который показал:
не знаю, как они оказались там, но воссоздание файла исправило проблему. Анализ hex из поврежденного файла показали следующее:
одна вещь, чтобы также посмотреть, это вы сохраняете свой .файл gitignore с правильными окончаниями строк?
WINDOWS: Если вы используете его в windows, вы сохраняете его с окончаниями строк windows? Не все программы будут делать это по умолчанию, notepad++ и многие редакторы php по умолчанию для Linux, поэтому файлы будут совместимы с сервером. Один из простых способов проверить это, является открытие файла в Windows notepad. Если все отображается в одной строке, то файл был сохранен в строке linux окончания.
LINUX: Если у вас возникли проблемы с файлом, работающим в среде linux. Откройте файл в Редакторе, таком как emacs или nano. Если вы видите какие-либо непечатаемые символы, то файл был сохранен с окончаниями строк windows.
хорошо, поэтому в моем случае принятое решение не сработало, и то, что сработало, описано здесь:
- Закройте Visual Studio.
- перейдите к вашей .папку с Git
- удалить ms-persist.в XML
- Перезапустите Visual Studio
надеюсь, что это поможет кому-то когда-нибудь
просто удалите папку или файл, которые ранее фиксировались в git, следуя команде, затем файл gitignore будет отражать правильные файлы.
The .файл gitignore не будет работать, если у вас есть встроенные комментарии, например:
измените его на это:
У меня была небольшая проблема с этим. Я смог пойти в www.GitHub.com/project и удалите файл с пользовательским интерфейсом и добавьте это изменение в мастер-РЕПО.
похоже, я добавил файл в репо, прежде чем я сделал .гитюдного. Кажется, это работает.
Если вы пользователь Notepad++, попробуйте сделать следующее:
открыть свой .файл gitignore с помощью Notepad++ и do:
изменить > преобразование EOL > формат Windows > сохранить
попробуйте снова использовать статус git и посмотрите, сработало ли это для вас.
Я опубликовал ответ на аналогичный вопрос здесь.
теперь это, очевидно, означает, что я также говорю git игнорировать .сама гитюдного. Это не было проблемой, пока я не отслеживал .гитюдного. Но в какой-то момент я это сделал .сама гитюдного. Это потом привело к тому .гитюдного будучи надлежащим образом игнорируется.
таким образом, добавление еще одной строки исправлено это:
Источник
Исправлено: Gitignore не работает —
GitHub стал ведущим пионером в области совместной работы над кодом и совместного использования репозитория. GitHub — это, прежде всего, программное обеспечение для контроля версий, которое позволяет пользователям контролировать распределенный контроль версий и SCM (управление исходным кодом). Эта платформа используется крупными компаниями и компаниями по всему миру.
Подобные платформы имеют свои технические особенности и проблемы. Одна конкретная проблема, с которой столкнулись программисты, заключалась в том, что .gitignore не работал в GitHub. Платформа либо игнорировала .gitignore, либо работала частично. Интересно отметить, что проблема может немного отличаться в каждом случае, так как каждый случай является совершенно другим сценарием. Однако решения, которые мы перечислим, будут содержать исправления, которые будут работать универсально.
Что такое .gitignore?
Git (или GitHub) видит каждый файл в вашем рабочем каталоге. Он характеризует каждый файл как один из трех:
- Отслеживаются: Эти файлы либо зафиксированы, либо поставлены ранее в истории.
- Неотслеживаемые: Это файлы, которые ранее не были поставлены или зафиксированы.
- Игнорируется: Это файлы, которые пользователь сам сказал Git полностью игнорировать.
Эти игнорируемые файлы могут варьироваться от сценария к сценарию, и в основном это файлы, созданные компьютером или артефакты сборки. Это обычная практика; вы можете игнорировать другие файлы в соответствии с вашими потребностями. Некоторые примеры этих файлов:
- Скомпилированный код: Эти файлы обычно имеют расширение .class, .pyc, .ccp и т. Д.
- Скрытые системные файлы: Это файлы, которые используются системой для своих операций, но скрыты от простого просмотра, например, DS_Store или Thumbs.db и т. Д.
- Построить выходные каталоги: В основном это каталоги / bin, / out и т. Д.
- Кеши зависимостей: Эти файлы могут быть содержимым модулей / node или / packages.
- Файлы конфигурации IDE: Это файлы конфигурации, которые в основном создаются или управляются вашим программным обеспечением IDE.
- Файлы, созданные во время выполнения: Есть несколько программ, которые создают файлы во время выполнения. Если любой такой код выполняется, некоторые файлы могут быть сгенерированы во время выполнения в вашей рабочей папке, и вы можете игнорировать их в Git.
Какой бы файл вы не хотели игнорировать, он отслеживается в специальном файле с именем .gitignore, который в основном проверяется в корне вашего рабочего репозитория. Согласно официальной документации GitHub по этому вопросу, нет конкретной команды gitignore. Вместо этого вы должны вручную отредактировать файл, который вы хотите игнорировать. Файл .gitignore содержит шаблоны, которые сопоставляются с именами файлов в вашем рабочем хранилище, и они используются, чтобы помочь определить, следует ли игнорировать конкретный файл или нет.
Что заставляет .gitignore не работать?
Функция .gitignore может работать отлично, но вы, возможно, не настроили ее должным образом. Во всех наших опросах мы пришли к выводу, что модуль действительно работал. Причина, по которой кодировщики не могут использовать эту функцию, заключается главным образом в том, что они неправильно сконфигурировали файл или существуют некоторые условия, которые не выполняются в базовом коде.
Вот некоторые решения, которые могут работать для вас. Каждое решение может быть неприменимо в вашем случае, поэтому убедитесь, что вы переключаетесь на следующее, если начальные условия не выполняются.
Решение 1. Проверка файла .gitignore
Появился интересный случай, когда мы увидели, что файл .gitignore создан в неправильном формате. Эта конкретная проблема возникла, когда пользователи создали файл с помощью стандартного приложения «Блокнот» в ОС Windows. Оказывается, Блокнот пишет файл в Unicode вместо формата ANSI. В этом решении мы сохраним изменения в Блокноте в правильном формате .gitignore и посмотрим, решит ли это проблему.
Замечания: Вы должны удалить расширение .txt из файла, когда создаете новый файл с помощью Блокнота.
- После написания кода или изменений в новом текстовом документе в Блокноте, нажмите на файл и выберите Сохранить как.
- Сейчас перед кодирование, Выбрать ANSI. Теперь удалите расширение файла .txt и сохраните файл с именем ‘.gitignore». Выберите правильный каталог и сохраните.
- Теперь перейдите в каталог и проверьте, создан ли правильный файл. Теперь протестируйте его снова с помощью Git и посмотрите, работает ли функция игнорирования должным образом.
Разработчики должны воздерживаться от использования Блокнота по умолчанию в Windows. Вместо этого вы должны использовать соответствующий «блокнот для программистов». Некоторые примеры включают Notepad ++ и т. Д. В них таких проблем не будет.
Замечания: Если ваш файл уже сохранен в формате UNICODE, вы должны правильно сохранить содержимое в формате ANSI, если вы хотите, чтобы Git правильно обнаружил ваш файл.
Решение 2. Проверка файла, который вы пытаетесь игнорировать
Другое условие, при котором работает .gitignore — это то, что ваш файл не должен быть часть хранилища еще. Это очень важный аспект, так как если это правда, файл не будет проигнорирован, как есть уже добавлено в хранилище. Git не может игнорировать это, даже если вы поместите его имя или правило в файл .gitignore. Так по сути, Git только игнорирует неотслеживаемые файлы.
Вы должны посмотреть на свою структуру (хранилище) и убедиться, что файл, который вы пытаетесь игнорировать, не добавлен в хранилище. Если это так, вам придется удалить файл из репозитория и после того, как последние изменения будут зафиксированы, добавить его имя в .gitignore (вы также можете скопировать содержимое файла и после удаления скопировать его с другим именем) ,
Решение 3. Повторное добавление файлов в репозиторий
Если вы уже добавили правила в .gitignore, но файлы, которые вы хотите игнорировать, уже добавлены, мы можем повторно добавить файлы. Добавление означает, что мы удалим все из индекса Git, а затем снова добавим все обратно в ваш репозиторий. Когда мы снова добавим файлы с нуля, будут учтены правила, добавленные вами в .gitignore, и будут добавлены только правильные файлы.
Замечания: Вы должны сделать резервную копию своего кода в другом месте, прежде чем выполнять это решение. Всегда хорошо иметь резервную копию на всякий случай.
- Выполните следующую команду. Это приведет к удалению и удалению путей к вашим файлам из индекса git рекурсивным способом.
- После того, как это выполнено, вы должны выполнить следующую команду. Это добавит все ваши файлы обратно, и так как .gitignore будет иметь правила, будут обновлены только правильные файлы.
- Теперь мы добавим все ваши файлы обратно в индекс, используя код ниже:
Теперь проверьте ваши файлы и посмотрите, решена ли проблема, и вы можете снова использовать .gitignore без каких-либо проблем.
Источник