git - исключить конкретную строку из отслеживания

Есть ли у git'а возможность исключить конкретную строку/слово/символ из отслеживаемого, что-то вроде занесения ее в .gitignore.

Например, есть файл с конфигом, в нем есть какой-то секретный токен, надо запушить на гитхаб этот файл только без секретного токена.

В файле:

$telegramToken = "dasfdasflasdfls";

Улетит на гитхаб:

$telegramToken = "";


Ответы (1 шт):

Автор решения: Roman Grinyov

Обычно делается примерно так:

  • допустим, есть папка config
  • в ней создаётся папка dist
  • в папку dist помещаются фейковые конфиги или конфиги для локальной разработки
  • папка dist коммитится
  • далее, на проде, вы копируете нужные конфиги из папки dist, например, mail.php в родительскую папку (config)
  • файлы из папки config (которые мы скопировали из dist) подключаются в одноимённых файлах из папки dist и переопределяют значения параметров (в PHP например это делают с помощью array_merge()); если какого-то параметра нет, то он, соответственно, будет браться из одноимённого файла из папки dist
  • файлы в папке config добавляются в .gitignore

А если очень хочется именно строку, то в IDE-хах есть такие фичи. Например, в PhpStorm можно на вкладке Git перенести изменённый файл в другой «Change List» и он не будет добавляться в stage, хотя другие его изменения — будут.

→ Ссылка