Gitignore не работает

Создал в PyCharm новую репу. Потом в терминале написал git add .. Он добавил все файлы, включая кеш и конфиги среды.
Потом я создал файл .gitignore с таким содержимым:

.idea/
__pycache__/
ytdl/__pycache__/
venv/

и написал

git rm . -f
git add .

но он всё-равно добавляет все файлы
Снимок экрана 2024-07-15 122204
Чё за фигня? :man_shrugging:
И зачем в папке .idea ещё один .gitignore? :thinking: Он же по факту не используется. Используется же только тот, что в корне проекта (на одном уровне с папкой .git).
p.s. git rm --cached . -r тоже не помогло :man_shrugging:
Даже если удалить репу и пересоздать её из консоли - всё-равно не работает.

На скриншоте они уже добавлены в staged для создания коммита, надо git reset

Используются все, на любом уровне.
Ну если вся папка заигнорена, то конечно тот, что внутри, не имеет значения.
Он для тех, кто хочет закомитить некоторые файлы из .idea типа настроек проекта, но без тех файлов, которыми нет смысла делиться.

Не помогает. То же самое происходит.

А как их из staged убрать? Почему они вообще туда добавились, если прописаны в .gitignore? Я же репу пересоздал уже после того как файл .gitignore был создан.

хз, видимо дело не в самом гите, у меня всё ок :man_shrugging:

[alex@alex-eos pythonProject2]$ git init
Initialized empty Git repository in /home/alex/Documents/p/pythonProject2/.git/

[alex@alex-eos pythonProject2]$ git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        .idea/
        file2.py
        main.py

nothing added to commit but untracked files present (use "git add" to track)

[alex@alex-eos pythonProject2]$ echo ".idea/" > .gitignore

[alex@alex-eos pythonProject2]$ cat .gitignore 
.idea/

[alex@alex-eos pythonProject2]$ git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        .gitignore
        file2.py
        main.py

nothing added to commit but untracked files present (use "git add" to track)

[alex@alex-eos pythonProject2]$ git add .

[alex@alex-eos pythonProject2]$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   .gitignore
        new file:   file2.py
        new file:   main.py

[alex@alex-eos pythonProject2]$ git reset

[alex@alex-eos pythonProject2]$ git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        .gitignore
        file2.py
        main.py

nothing added to commit but untracked files present (use "git add" to track)

Может с именем файла что-то?

Странно :thinking: Я именно так и делал. Потом в Notepad++ его редактировал. Потом ещё код случайно удалил. Пришлось всё переписывать. Но там не много было.
Вот он пишет: use "git rm --cached <file>..." to unstage. А как все файлы убрать? Их там много. Не по одному же.
Я написал git rm --cached ., он попросил добавить ключ -r. Ну окъ, я добавил. А он файлы кода (и .gitignore) с диска удалил. Это to unstage называется? :thinking:

Снимок экрана 2024-07-17 140152
Это я его уже вручную в папке переименовал. Не работает.

git reset например.

Может было без --cached?

Я писал и так и так несколько раз. Первые раза ничего не удалялось (с диска). Потом сначала .gitignore пропал. Я не понял, чё произошло. Подумал, что я сам его случайно удалил. Пересоздал. Ввёл команду ещё раз и пропали файлы кода.

Окъ. Оно расстейджелось. Но .gitignore-то не работает :man_shrugging: Сейчас попробую взять тот, что в папке .idea и отредактировать. Если что-то не так с именем файла, то это поможет.

Хааа, прикол! Это работает. А если его перезаписать командой echo .idea >.gitignore - он перестаёт работать. Причём, новый файл не появляется. То есть, это тот же файл с тем же именем, просто он не работает :man_with_turban: То есть, если бы я создал его в блокноте, а не из консоли, он бы работал :man_with_turban: :man_with_turban:
Это чё ещё за приколы такие, лол? :smiley:

Консоль создаёт файл в формате UTF-16 LE BOM, а нужен ANSI или UTF-8 :man_facepalming:
Подстава, Карл!
Хоть бы где-то блин в консоли писали про это, чтоли :thinking:
P.S. Раньше я писал проги в древней версии Delphi. Там тип string по-умолчанию это ANSI, вроде. Я в этом точно не уверен. Но, как минимум, японские иероглифы и всякое такое он не понимал. А в винде по-умолчанию для имён файлов и папок используется UTF-16 LE, как я понял. То есть, если сохранить какой-то программой файл, то его имя (а значит, и полный путь) будет в формате UTF-16 LE, правильно? Но тогда почему у меня с открытием файлов в Delphi проблем никогда не было? :thinking: Я вообще тогда о кодировках текста не знал. Не открывались только те файлы, где были иероглифы и всё такое. Но файлы с именами из “обычных” символов тоже ведь в UTF-16 LE. Разве нет? :thinking:

Мы это не могли увидеть никак.
chcp 65001
пробовали до создания файла при помощи echo?

Так проблема в имени или содержимом файла?

В содержимом. Проблема не могла быть в имени, потому что в нём нет символов за пределами ASCII. И потому что топикстартер перезаписывал файл по имени во вложенной директории (т.е. имя совпадало написанное и имеющееся).

Нет. Мне консоль об этом не написала. Сам знать про это я тоже не мог никак.

В имени. Все непонятные ему (delphi) символы заменялись на знаки вопроса. А значит - file not found.
Но в новой Delphi уже всё нормально было. Там string по-умолчанию понимает юникод.

Где? В Delphi? Или в гите? В гите - в содержимом.