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

GIT - Исключить/проигнорировать файлы из commit

Мне нужно игнорировать файлы в git! Я не думаю, что игнорировать - это правильное слово; Я хочу, чтобы файлы находились в git, но я не хочу иметь возможность вносить в них изменения. Это может показаться странным для некоторых, но есть много, много примеров, что мне нужна эта функциональность. Единственный экземпляр, в котором я нуждаюсь сейчас, - это использование git с CMS; CMS не будет работать без файлов, которые он постоянно меняет, но я не хочу, чтобы эти файлы когда-либо были зафиксированы после первоначальной фиксации. (Это очень легко сделать с SVN и Tortoise).

WorkFlow:

  • Получить все файлы, необходимые для запуска приложения.
  • Игнорировать указанные каталоги/файлы при совершении.

Вот что я пробовал:

  • .gitignore - файлы никогда не входят в git. Если файл уже находится в кеш файл .gitignore ничего не делает.
  • /.git/info/exclude - та же проблема, что и .gitignore, но только для локальное репо.
  • Ветвление - мастер = > LocalIgnores = > WorkingBranch. Когда Рабочая ветвь объединяется с мастером, изменения, сделанные из LocalIgnores заканчиваются мастером. Также, когда вы проверяете один из новые ветки, удаленные файлы удаляются, а не игнорируются.
  • Структура файла Thirdparty - каталог Thirdparty в корне node, который содержит копию всех важных файлов третьих сторон, чтобы они могли скопировать в рабочий каталог, который использует .gitignore файл. (Это работает, но должно быть проще/лучше solurtion).
4b9b3361

Ответ 1

Вот мой ответ из аналогичного вопроса.

git update-index должен делать то, что вы хотите

Это сообщит git, что вы хотите начать игнорировать изменения в файле
git update-index --assume-unchanged path/to/file

Если вы хотите начать отслеживание снова

git update-index --no-assume-unchanged path/to/file

Ответ 2

Другим решением является использование крюка pre-commit. Подробнее см. git help hooks.

  • Это сложнее настроить: вам нужно написать оболочку script, чтобы точно указать, что вы хотите разрешить или запретить, что, вероятно, означает, что вам нужно иметь хорошее понимание git.

  • Он более постоянный и гибкий: с трюками типа git update-index вы можете случайно забыть его запустить и т.д. Но как только вы настроите крючок, вам больше не придется беспокоиться об этом.

    /li >

Как и другие предложенные трюки, перехватчики автоматически не распространяются между репозиториями, но вы можете проверять их как обычные файлы и каждый из них связывает их с .git/hooks.