Как очистить неотслеживаемые или игнорируемые файлы, содержащие несколько .gitignore

Платформа: Windows 8.1

Чтобы упростить настройку Emacs, я загружаю свою личную папку Emacs C:\Users\username\AppData\Roaming\.emacs.d на github.

Обычно я использую Emacs 24.3 для редактирования файла init.el, после чего в той же папке создается копия с именем init.el~. С помощью .gitignore я добавляю строку *~ в git clean -fdx файла с косой чертой.

Проблема заключается в пакете elpa, таком как AucTeX, которому принадлежит автономный файл .gitignore. Этот файл может содержать шаблон для удаления файла *.elc, который я хочу сохранить. Итак, в моем репозитории есть несколько файлов .gitignore. Один создан мной. Остальные предназначены для пакетов elpa.

Если я попытаюсь git clean -fdx, файл .gitignore AucTeX вступит в силу, удалив файл *.elc из репозитория.

Как отключить файл .gitignore, созданный не мной?

Как деактивировать файлы .gitignore, прикрепленные к другим пакетам Emacs elpa?


person Zachary    schedule 17.11.2014    source источник
comment
Файл .gitignore находится в корневых каталогах, в вашем случае в каталоге AucTex. Найдите этот файл и просто удалите его. Добавить и зафиксировать. .gitignore перестанет отслеживать, потому что его больше нет.   -  person Kiran Thapa    schedule 17.11.2014


Ответы (1)


Я думаю, вас могут смутить аргументы git clean? Аргумент -x говорит git clean не обращать внимания на содержимое .gitignore файлов (чтобы были удалены все неотслеживаемые файлы). Файлы .elc не удаляются, потому что они перечислены в файле .gitignore AucTeX; они удаляются, потому что они являются неотслеживаемыми файлами и потому что вы сказали git не рассматривать файлы .gitignored как защищенные.

Если вы зафиксируете файлы .elc (которые являются переносимыми), git не захочет их очищать.

Лично я всегда так делаю. Я не хочу работать с нескомпилированным кодом и не хочу перекомпилировать все без необходимости. Шансы столкнуться с проблемой переносимости очень малы — и если вы когда-либо сталкивались с проблемами и хотели перекомпилировать библиотеку, это гораздо проще сделать, если существуют .elc файлы, чтобы сообщить Emacs, какие файлы должны компилироваться.

Добавьте в список https://github.com/tarsius/auto-compile, и ваш .elc файлы всегда будут актуальными.

Если вы не хотите этого делать, то, я думаю, вам нужно либо запустить git clean без аргумента -x, либо обрабатывать шаблоны файлов из вашего корневого уровня .gitignore в дополнительном проходе; или же используйте аргумент --dry-run, чтобы показать, что он удалит, и отфильтруйте файлы, которые вы действительно хотите сохранить (в этом случае вы можете выполнить первый проход без -x, а затем второй проход с -X (верхний регистр), который вы бы фильтр).

person phils    schedule 17.11.2014
comment
Я пробовал и git clean -ndx, и git clean -ndX. Они оба очистят весь файл .elc. Вы упомянули в своем посте, что .elc файлы являются неотслеживаемыми файлами. Я думаю, дело в этом. Я зафиксировал и отправил файл .elc в веб-репозиторий github. - person Zachary; 18.11.2014