Дополнительно
Gitignore игнорируется Git
Кажется, что мой файл .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 /
не отображались в списке не отслеживаемых файлов.
Где я должен начать искать, чтобы исправить это?
1394
28
Даже если вы до сих пор не отслеживали файлы, Git, похоже, может «знать» о них даже после того, как вы добавите их в «.gitignore».
ПРИМЕЧАНИЕ: Сначала зафиксируйте ваши текущие изменения, иначе вы их потеряете.
Затем выполните следующие команды из верхней папки вашего репозитория Git:
Если кажется, что Git не замечает изменений, которые вы внесли в файл
.gitignore
, вы можете проверить следующие моменты:Может быть глобальный файл
.gitignore
, который может помешать вашему локальномуКогда вы добавляете что-то в файл .gitignore, попробуйте это:
Если вы удалите что-то из файла .gitignore, и вышеуказанные шаги могут не сработать, если вы обнаружили, что вышеуказанные шаги не работают, попробуйте это :
Исправлено. Хорошо, я создал файл .gitignore в Блокноте в Windows, и он не работал. Когда я просматривал файл .gitignore в Linux, он выглядел как организованный бред - возможно, Блокнот записал Unicode, а не ASCII или что-то еще 8-битное.
Поэтому я переписал файл в своем Linux-боксе, и когда я вернул его обратно в Windows, он работает нормально! Ура!
Без добавления еще одного коммита в ваш проект одной строки будет достаточно, чтобы заставить
.gitignore
работать так, как предполагается:Это удалит их из хранилища, но все равно сохранит их физически. На простом английском языке он удаляет любую историю изменений, связанных с ними, а также не будет отслеживать их изменения в любом будущем коммите. Вы можете найти лучшее объяснение здесь.
Другой причиной этого вопроса являются пробелы или вкладки перед оператором:
Пример:
И, как указано в комментарии ниже, трейлинг-пространство также может быть проблемой:
Как и в случае с другими решениями, совершайте первые обязательства и имейте в виду, что вы потеряете любые незафиксированные изменения.
У меня были лучшие результаты с этим:
Обратите внимание, что в статусе не должно быть никаких измененных файлов.
Я заметил, что кодировка
.gitignore
имела эффект - если файл был Unicode, он игнорировался, если это был ASCII, это не было.Процесс:
PS > git status
.gitignore
:PS > Get-FileEncoding .gitignore
PS > Set-Content .gitignore -Encoding Ascii -Value (Get-Content .gitignore)
PS > git status
В моем случае это потому, что файлы уже существуют в хранилище, и я пытаюсь их игнорировать.
Вот что я сделал, чтобы решить проблему:
К тому времени любые изменения, которые я внес в эти файлы, были проигнорированы.
Я думаю, что вы не можете игнорировать файлы, которые уже существуют в хранилище.
Все ответы здесь на самом деле обходные пути. Вам нужно создать файл .gitignore , прежде чем вы запустите
git init
. В противном случаеgit
никогда не узнает, что вам нужно игнорировать эти файлы, потому что они уже были отслежены.Если вы разрабатываете ежедневно, я советую вам добавлять ваши обычные игнорируемые файлы в файл
~/.gitignore_global
. Таким образом,git
уже будет знать, какие файлы вы (что означает «ваш пользователь», поскольку это файл в вашем домашнем каталоге) обычно игнорируете.Также проверьте каталог , куда вы положили
.gitignore
.Это должно быть в корне вашего проекта :
Не в
Специально для пользователей Windows: если у вас есть неотслеживаемые файлы и очистка / удаление кэшированных файлов не работает. Попробуйте открыть PowerShell и преобразовать файл .gitignore в кодировку UTF-8:
`
PowerShell $ Myfile = Get-Content .\ .gitignore
$ Myfile | Out-File - кодирование "UTF8" .gitignoreМожет возникнуть еще одна проблема с
.gitignore
, особенно для пользователя Windows. Git не нравится, когда вы называете.gitignore
(например,unity.gitignore
).Вы хотите всегда называть его
.gitignore
или в Windows.gitignore.
как Windows думает, что вы пытаетесь переименовать его без имени файла.Я только что столкнулся с этой проблемой. Содержимое в моем файле .gitignore продолжало появляться в списке не отслеживаемых файлов.
Я использовал это, чтобы создать файл игнорирования:
Оказывается, двойные цитаты вызывали у меня проблему. Я удалил файл игнорирования, а затем снова использовал команду без кавычек, и она работала, как и ожидалось. Мне не нужно было связываться с кодировкой файла. Я на компьютере с Windows & nbsp; 10, использующем Cmder.
Пример:
Для меня ни один из предыдущих ответов не сработал. Мне пришлось скопировать текст
.gitignore
в файлexclude.txt
, найденный вПосле этого обновите ваши изменения, и все файлы без отслеживания исчезнут. Совершите как обычно.
Моя проблема была (как предложил OP) поврежденным файлом .gitignore. Я не верил, что это было, и игнорировал возможность, пока все остальное не провалилось. Повреждение не отображалось в
vi
, но в начале файла было два байта, что привело к игнорированию файла .gitignore. Для меня они появились только тогда, когда я напечаталcat .gitignore
, который показал:Я понятия не имею, как они оказались там, но воссоздание файла исправило проблему. Гексиальный анализ поврежденного файла показал следующее:
У меня была эта проблема с файлом .gitignore, содержащим эту строку:
Я только что понял, что на самом деле этот каталог является символической ссылкой на папку где-то еще:
В строке
lib / ext /
Git фактически ищет папку , но символическая ссылка - это файл , поэтому моя папкаlib
не игнорируется.Я исправил это, заменив
lib / ext / `` на
lib / ext` в моем файле .gitignore.У меня была та же проблема. Я считаю, что проблема была CR против. Расхождение CR + LF. Я спрятал вещи в своем .gitignore, используя CMD (в Windows & nbsp; 7) и следующую команду:
Плохой:
И т. Д.
Проблема заключалась в том, что эта команда не помещает правильный маркер конца строки для Git для распознавания новых строк (либо CR, либо CR + LF, когда Git ожидает другого). Я решил проблему, вручную заменив каждую новостную линию в Vim (Vim на помощь!) и это сработало отлично.
Попробуйте отредактировать свой .gitignore в Notepad ++ или Vim (в идеале). Даже если файл выглядит так, как будто он отформатирован правильно, попробуйте заменить новые строки. Это звучит странно, я знаю, но это сработало для меня. : D
Хорошо, так что в моем случае принятое решение не сработало, и то, что сработало, описано здесь:
Короче говоря:
ms-persist.xml
На что также следует обратить внимание: сохраняете ли вы файл .gitignore с правильными окончаниями строки?
Windows:
Если вы используете его в Windows, сохраняете ли вы его с окончаниями строк Windows? Не все программы будут делать это по умолчанию; Блокнот ++ и многие редакторы PHP по умолчанию используют окончания строк Linux, поэтому файлы будут совместимы с сервером. Один простой способ проверить это - открыть файл в блокноте Windows. Если все отображается в одной строке, файл был сохранен с окончаниями строки Linux.
Linux:
Если у вас возникли проблемы с файлом, работающим в среде Linux, откройте файл в редакторе, таком как Emacs или nano. Если вы видите непечатаемые символы, файл был сохранен с окончаниями строк Windows.
Просто удалите папку или файл, который был ранее зафиксирован в Git, следующей командой. Тогда файл gitignore будет отражать правильные файлы.