А можно ли как-то иметь файл в локальном репозитории, но при этом чтобы он не пушился в удаленный?

Да, можно иметь файл в локальном репозитории, но чтобы при этом он не пушился в удаленный репозиторий. Для этого существует несколько методов.

Первый метод - добавить файл в список игнорируемых файлов. В Git для этого используется файл .gitignore. В этом файле вы указываете пути к файлам или директориям, которые не должны попасть в репозиторий. Как только вы добавляете файл в .gitignore, Git перестает отслеживать его изменения и он не будет пушиться в удаленный репозиторий. Но файл останется в локальном репозитории и будет доступен на вашем компьютере. Важно отметить, что .gitignore не удаляет уже отслеживаемые файлы из репозитория. Для этого нужно удалить их специальной командой git rm --cached <путь к файлу>.

Второй метод - использование веток. Вы можете создать новую ветку и добавить нужный файл только в эту ветку, оставив его вне основной ветки, которая пушится в удаленный репозиторий. Это позволит вам локально работать с этим файлом, но не пушить его изменения в удаленный репозиторий.

Третий метод - использовать команду git update-index для изменения индекса файлов. Вы можете использовать команду git update-index --assume-unchanged <путь к файлу>, чтобы временно игнорировать изменения в файле, не добавляя его в .gitignore. Тем не менее, это делает файл невидимым для Git, поэтому он не будет отслеживать любые изменения в файле. Если нужно возобновить отслеживание изменений, можно использовать команду git update-index --no-assume-unchanged <путь к файлу>.

Наконец, стоит отметить, что важно быть осторожным при работе с этими методами. Игнорирование файлов или временное отключение отслеживания изменений может привести к потере данных, если вы забудете включить отслеживание или удалить файлы из .gitignore в будущем. Убедитесь, что вы полностью понимаете последствия своих действий и делайте резервные копии ваших файлов перед использованием этих методов.