Решением вашей проблемы является правило фильтра git smudge / clean. Это позволяет вам устанавливать фильтры, которые будут изменять файлы при оформлении заказа и отменять эти изменения при регистрации. Вот хороший рисунок:
![enter image description here](https://i.stack.imgur.com/EK5cD.png)
Сначала настройте фильтры, которые могут вносить изменения в обоих направлениях, добавив к вам что-то вроде следующего .git/config
. Фильтр smudge преобразует файл в репозитории в рабочую копию, чистый фильтр отменяет это изменение. Важно, чтобы при запуске smudge -> clean получился именно оригинальный файл. Приведенные здесь фильтры заменят первую строку на #!~/local/bin/python
в рабочей копии, если она #!/usr/bin/env python
в репо
[filter "pyshebang"]
smudge = sed '1s?^#!/usr/bin/env python$?#!~/local/bin/python?'
clean = sed '1s?^#!~/local/bin/python$?#!/usr/bin/env python?'
Теперь активируйте этот фильтр, добавив такую строку в .git / info / attribute (создайте этот файл, если он не существует):
*.py filter=pyshebang
Если ваши файлы Python не заканчиваются на .py
, просто настройте фильтр для правильных файлов / целой папки / всех файлов. Если вы правильно настроите фильтр, он все равно изменит файлы только с помощью python shebang.
Я бы порекомендовал прочитать нечеткие фильтры , чтобы понять детали происходящего.