и посмотреть медиа
Код на салфетке - Python кодинг
и посмотреть медиа
Канал о программировании на Python и других языках. Простые объяснения и коды.
Канал о программировании на Python и других языках. Простые объяснения и коды.
AI бот для озвучки текста и клонирования голоса в Telegram. Создавай аудио с помощью нейросети быстро и просто.
Ресурс для интересующихся программированием. Фокус на Python, но охватывает и другие темы. Простые примеры и разборы.
Знаете ли вы, почему файл из .gitignore все равно попадает в коммиты? Бывает, файл уже лежит в репозитории, а потом его добавляют в .gitignore. Кажется, все просто: строчка в .gitignore, коммит, и файл больше не должен попадать в изменения. Но git status продолжает показывать его при каждой правке, а git add . снова кладет изменение в индекс. Правила игнора применяются только к путям, которых еще нет в индексе. Между рабочим каталогом и историей находится индекс Гита: файл .git/index со списком отслеживаемых путей и хешей их содержимого. git status сравнивает HEAD с индексом, чтобы показать подготовленное к коммиту, и индекс с рабочим каталогом, чтобы показать неподготовленные правки. Отдельным проходом Git ищет пути, которых в индексе нет. Вот этот список и фильтруется через .gitignore. Путь с записью в индексе в такой проход не попадает. git init -q demo && cd demo echo "line=1" > debug.log git add debug.log && git commit -qm "add debug log" echo "debug.log" > .gitignore git add .gitignore && git commit -qm "add gitignore" echo "line=2" >> debug.log git status --short # M debug.log git check-ignore -v debug.log # пусто, код возврата 1 git check-ignore --no-index -v debug.log # .gitignore:1:debug.log debug.log git check-ignore по умолчанию тоже учитывает индекс. Для отслеживаемого debug.log он молчит и завершается с кодом 1. Флаг --no-index проверяет только правила игнора и показывает совпавшую строку. Правило в .gitignore есть, просто к уже отслеживаемому файлу оно не применяется. git rm --cached -q debug.log git commit -qm "untrack debug log" echo "line=3" >> debug.log git status --short # пусто git rm --cached удаляет запись из индекса, но оставляет файл на диске. После коммита debug.log становится неотслеживаемым, и .gitignore начинает работать: новые правки больше не попадают в git status. Из истории файл при этом не исчезает. git rm --cached меняет состояние индекса и следующих коммитов, но не переписывает прошлые. С каталогами похоже – правило logs/ игнорирует сам каталог, поэтому Git не спускается внутрь и не видит !logs/keep.log. А правило logs/* игнорирует содержимое, но оставляет каталог доступным для обхода, поэтому отрицание для конкретного файла сработает. .gitignore работает только для неотслеживаемых путей. Если файл уже попал в индекс, сначала уберите его оттуда через git rm --cached, а потом коммитьте правило игнора. Код на салфетке x Кусочки кода
Открыть канал и посмотреть медиаТолько зарегистрированные пользователи могут делиться своим мнением.
Станьте первым, кто поделится своим впечатлением об этом ресурсе!