.gitignore не игнорирует файлы - PullRequest
30 голосов
/ 03 июня 2010

Мой .gitignore файл игнорируется, а файлы, которые следует игнорировать, по-прежнему видны.

user@host ~/workdir % git status
# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   .htaccess
#       modified:   application/controllers/statistics.php
#
no changes added to commit (use "git add" and/or "git commit -a")
user@host ~/workdir % cat .gitignore
.htaccess
application/config/config.php
application/config/database.php
user@host ~/workdir %

Файлы находятся в управлении версиями, но с ощутимыми изменениями я не хочу нажимать. git rm ... не вариант, поскольку файлы должны находиться в режиме контроля версий (с другими настройками в файлах). Я просто не хочу помещать свои изменения в эти файлы.

Ответы [ 8 ]

54 голосов
/ 19 октября 2011

У меня была та же проблема: я хотел другой файл .htaccess для каждого хранилища, тогда я не мог, потому что файл htaccess уже был добавлен в хранилище. Теперь он работает, я могу изменить любой файл .htaccess из любой версии, не получая при этом мерзавца. Марк прав, когда говорит: «Сначала нужно удалить его, прежде чем его можно будет проигнорировать. Это можно сделать с помощью git rm».

я поступил в следующем порядке:

  • сделайте резервную копию вашего файла .htaccess где-нибудь
  • удалить файл .htaccess с помощью git rm .htaccess
  • зафиксировать это изменение (удаление .htaccess)
  • push it (git push)

это, очевидно, удалит ваш файл .htaccess

  • , затем отредактируйте .gitignore и добавьте /.htaccess
  • совершить, затем нажать
  • воссоздайте свой файл .htaccess, восстановив предыдущую резервную копию

тогда все готово: любые изменения, которые вы вносите в .htaccess, больше не будут выдвигаться. Трудная часть состоит в следующем шаге порядок ...

надеюсь, это понятно

37 голосов
/ 20 июня 2012

после шагов anybug, отмеченных здесь мой git все еще отслеживал .htaccess, и это помогло:

git update-index --assume-unchanged .htaccess

Чтобы вернуться назад:

git update-index --no-assume-unchanged .htaccess
13 голосов
/ 03 июня 2010

Так как вы хотите:

  • сохранить .htaccess в репозитории Git (нет git rm)
  • содержит локальных конфиденциальных данных

использует драйвер фильтра , который будет:

  • на этапе оформления заказа заполните .htaccess личными данными
  • на этапе фиксации очистить .htaccess от всех конфиденциальных данных

content filter driver

затем вы можете создать версию зашифрованного файла, которую ваш сценарий будет:

  • быть единственным, кто расшифрует
  • используйте для завершения классического (и выдвинутого / вытащенного) файла .htaccess.

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

9 голосов
/ 01 апреля 2014

Предположим, что ниже приводится содержимое файла .gitignore. Здесь .htaccess находится в корневом каталоге проекта.

/.htaccess
application/config/config.php
application/config/database.php

Давайте запустим следующую команду, чтобы игнорировать файлы .htaccess, config.php и database.php.

badelal143@gmail.com:work-dir$ git update-index --assume-unchanged .htaccess
badelal143@gmail.com:work-dir$ git update-index --assume-unchanged application/config/config.php
badelal143@gmail.com:work-dir$ git update-index --assume-unchanged application/config/database.php

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

badelal143@gmail.com:work-dir$ git update-index --no-assume-unchanged path/to/file

, например

badelal143@gmail.com:work-dir$ git update-index --no-assume-unchanged .htaccess
8 голосов
/ 03 июня 2010

Игнорирование файлов в git не означает, что вы не подтолкнете их. Это означает, что вы не будете контролировать версию их. Если вы не хотите нажимать тогда, я предлагаю вам создать локальную ветку, которая будет содержать материал для локальной машины, а затем объединить необходимые изменения с веткой, которую вы отправите в удаленную.

Я думаю, что вы уже add отредактировали свои файлы и теперь пытаетесь их игнорировать.

5 голосов
/ 03 июня 2010

Кажется, что файл .htaccess уже добавлен в систему управления версиями. Вы должны сначала удалить его, прежде чем его можно будет проигнорировать. Это можно сделать с помощью git rm

3 голосов
/ 19 июня 2014

Я делаю это все время. Я начинаю с конфигурационных файлов в моем репо, затем решаю, что я не хочу, чтобы они были там.

Вы можете удалить что-то из своего репо, используя

git rm --cached <<filename>>
2 голосов
/ 03 июня 2010

Этот издавал меня несколько дней. Файл .htaccess уже находится под контролем версий и был изменен.

...