Как вы говорите git навсегда игнорировать изменения в файле? - PullRequest
18 голосов
/ 20 апреля 2010

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

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

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

Ответы [ 3 ]

11 голосов
/ 17 января 2013

Просто скажите 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

9 голосов
/ 20 апреля 2010

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

clean smudge

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

2 голосов
/ 20 апреля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...