Как остановить отслеживание файла, не удаляя его из репо

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

Причина, по которой я не хочу отслеживать изменения, заключается в том, что она должна различаться между компьютерами в зависимости от их среды.

Ответ 1

Если в этом случае вы не должны иметь файл с версией вообще; вы должны указать шаблон файла. Например, если файл конфигурации foo/config.txt, то вы должны иметь версию foo/config.txt.template с версией в репозитории с примерными (или пустыми) настройками конфигурации. foo/config.txt не должен находиться в репозитории вообще, и его следует игнорировать с помощью .gitignore.

Затем в новом клоне вы просто скопируете foo/config.txt.template в foo/config.txt и соответствующим образом измените настройки.

Ответ 2

Если вы хотите временно остановить отслеживание файла, вы все равно можете использовать

git update-index --assume-unchanged <file>
// track changes again :
git update-index --no-assume-unchanged <file>

Ответ 3

Вы можете перенести все остальные файлы, а для изменений только в локальных конфигурациях вы можете использовать функцию 'stash', которая git.

Ответ 4

Вам понадобится комбинация файла .gitignore и git rm --cached. Используйте следующую команду:

git rm --cached filename.txt

Это приведет к удалению файла из индексации, но он сохранит его в вашем репозитории и рабочей области. После применения rm -cached вам необходимо будет зафиксировать изменения, чтобы они вступили в силу. Он будет отображаться как "Удалено" в ваших отслеживаемых изменениях, но это только потому, что он был удален из индексации. Примечание. Если вы вносите изменения в него еще раз в будущих коммитов, вам нужно будет запустить: git rm --cached, чтобы отменить изменения в файле из определенного коммита.