Подтвердить что ты не робот

Как вы скажете git постоянно игнорировать изменения в файле?

Я работаю с репозиторием git, который хранит данные для веб-сайта. Он содержит файл .htaccess с некоторыми значениями, которые подходят для производственного сервера. Для того, чтобы я работал на сайте, мне нужно изменить некоторые значения в файле, но я никогда не хочу фиксировать эти изменения или я буду разбивать сервер.

Так как .gitignore не работает для отслеживаемых файлов, я использовал "git update-index --assume-unchanged.htaccess", чтобы игнорировать мои изменения в файле, однако это работает только до тех пор, пока вы не переключите ветки. После того, как вы вернетесь к исходной ветке, ваши изменения будут потеряны.

Есть ли способ сообщить git игнорировать изменения в файле и оставить его в покое при смене ветвей? (Так же, как если бы файл не был просмотрен.)

4b9b3361

Ответ 1

Вы можете использовать smudge/clean process (драйвер фильтра gitattribute, описано в ProGit)

clean smudge

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

Ответ 2

Просто скажите git предположить, что файл не изменился:

$ git update-index --assume-unchanged FILE [FILE ...]

Из руководства:

   --assume-unchanged, --no-assume-unchanged
       When these flags are specified, the object names recorded for the paths are not updated. Instead, these options set and unset the "assume unchanged" bit for the paths. When the "assume unchanged" bit is on, git stops checking the
       working tree files for possible modifications, so you need to manually unset the bit to tell git when you change the working tree file. This is sometimes helpful when working with a big project on a filesystem that has very slow
       lstat(2) system call (e.g. cifs).

       This option can be also used as a coarse file-level mechanism to ignore uncommitted changes in tracked files (akin to what .gitignore does for untracked files). Git will fail (gracefully) in case it needs to modify this file in the
       index e.g. when merging in a commit; thus, in case the assumed-untracked file is changed upstream, you will need to handle the situation manually.

Найдено в Как игнорировать изменения в отслеживаемых файлах с помощью Git

Ответ 3

Подход

git: используйте производственную ветвь и сохраняйте изменения, характерные для вашей производственной среды. Чтобы выпустить на производство, объедините свой главный ветвь в свою производственную ветвь.

подход на основе развертывания: используйте инструмент (например, capistrano/cfengine/...) для автоматизации процесса развертывания. Это имеет много преимуществ, одна из которых - возможность сохранить конфигурацию отдельно от вашего кода.