Правильная процедура git для измененных файлов, которые не должны быть зафиксированы? - PullRequest
3 голосов
/ 17 октября 2011

Я просто унаследовал существующую кодовую базу, в которой есть несколько файлов конфигурации.Эти файлы конфигурации являются общими и предназначены для редактирования и настройки для каждой машины, на которую они загружаются.Git (очевидно) говорит мне, что они были отредактированы и всегда показывает их в «изменениях, не подготовленных для фиксации» каждый раз, когда я делаю git status.Как я могу игнорировать эти файлы в git?Добавление их в .gitignore не работает, потому что они уже отслеживаются git.Я не хочу что-либо фиксировать в репо, но в то же время я хочу сказать git больше не отслеживать эти файлы на моей локальной машине.Есть ли способ сделать это, о котором я не знаю?Я знаю, что могу git stash их, и они больше не будут показываться, но я чувствую, что это не совсем то, для чего это было предназначено ... Я ошибаюсь?

Не уверен, что это что-то меняет, ноЯ использую git-svn на своей локальной машине для взаимодействия с сервером SVN.

Ответы [ 5 ]

4 голосов
/ 17 октября 2011

Чтобы игнорировать файлы, уже отслеженные git, у меня настроен псевдоним git (который на самом деле просто делает то, что предлагает birryree, но более удобно). Добавьте это к вашему .gitconfig:

[alias]
  ignore = !git update-index --assume-unchanged
  unignore = !git update-index --no-assume-unchanged
  ignored = !git ls-files -v | grep "^[[:lower:]]"

Затем вы можете сделать git ignore foo, git unignore foo или git ignored, чтобы вывести список игнорируемых файлов.

4 голосов
/ 17 октября 2011

Не храните файлы конфигурации в хранилище. Вы можете хранить примеры версий этих файлов или их «общие» версии в хранилище, но делать это под другим именем.

Если их несколько, и они живут в своем собственном каталоге, создайте отдельный каталог для хранения общих версий в хранилище. Если их всего один или два, и у них нет собственного каталога, используйте имена файлов. Вы можете добавить что-то вроде -default или -example к версиям, хранящимся в хранилище.

2 голосов
/ 17 октября 2011

Мое предложение будет:

  1. Переименовать *.properties в *.properties.example
  2. Добавить *.properties.example в хранилище
  3. Удалить *.properties из хранилища
  4. Добавить *.properties к .gitignore
2 голосов
/ 17 октября 2011

Я делаю что-то, как предлагает Дэвид Шварц, - создание конфигураций оболочки / шаблона, таких как database.yml.template, а затем скопируйте этот файл и настройте его для моей среды как database.yml.Затем я могу .gitignore эти новые файлы.

Если вы хотите сделать это без изменения того, как файлы существуют в репо, то:

git update-index --assume-unchanged [filename]

заставит git игнорировать изменения в этом файле, но вы должны осознавать это.

Больше информации здесь: http://gitready.com/intermediate/2009/02/18/temporarily-ignoring-files.html

0 голосов
/ 20 декабря 2012

Вы хотите использовать бит skip-worktree, а не бит assume-unchanged.

git update-index --skip-worktree [filename]

См. этот вопрос , почему это предпочтительнее assume-unchanged, и эта веб-страница для некоторых последствий.

По сути, skip-worktree очень старается сохранить ваши изменения в файле, но assume-unchanged может потерять их при выполнении некоторых операций.

...