Git: удаление файла .gitignore, похоже, не оказывает никакого влияния

#git #delete-file

#git #удалить-file

Вопрос:

Работа в существующем каталоге, в котором единственным файлом является .gitignore, который выглядит следующим образом :

 # Ignore everything in this directory
*
# Except this file
!.gitignore
  

После добавления 2 новых файлов и выполнения «git status» 2 новых файла не отображаются из-за файла .gitignore.

Я полагаю, что .gitignore необходимо удалить. Для этого была выполнена следующая команда.

 > git rm -f .gitignore
  

При выполнении «git status» 2 новых файла по-прежнему не отображаются.

Даже пробовал эту команду позже, но все равно 2 новых файла не отображаются с командой «git status».

 > git add .gitignore
  

С тех пор я пытался выполнить сброс и все, но это вызвало другие проблемы. Даже удаление ветки и ее повторное создание не помогло. В конце концов мне пришлось выполнить «git reset —hard». Это вернуло файл .gitignore, и другие мои файлы, которые я создал, все еще там. По сути, я вернулся к исходной точке 1.

Какие команды необходимо выполнить, чтобы «git status» отображал вновь созданные файлы?

Комментарии:

1. Это странно. Я не могу воспроизвести вашу проблему. После git rm -f .gitignore файл gitignore подготовлен к удалению, и я снова могу видеть два файла. Какую версию git вы используете и проверяли ли вы, есть ли проблема с синхронизацией файла / файловой системы?

2. git версии 2.9.3

3. И после выполнения git rm и выполнения «git status» показывает, что файлы теперь являются неотслеживаемыми файлами?

4. ДА. Я добавляю два новых файла, ничего не вижу, затем я делаю git rm -f .gitignore и вижу, что gitignore подготовлен к удалению, плюс два файла как неотслеживаемые.

5. Есть ли вероятность, что в родительском каталоге есть .gitignore файл, который может подойти?

Ответ №1:

Выполнить:

 git check-ignore -v
  

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

Если это ничего не дает, используйте git ls-files -v для поиска записей индекса, флагом которых является или h или S , указывающий на то, что файл помечен как assume-unchanged или skip-worktree , или s (установлены оба флага). Возможно, также стоит проверить с помощью -f наличие флагов «fsmonitor valid» на случай, если в этом коде есть ошибка.

Комментарии:

1. Спасибо. Теперь он работает, но будет документировать эти команды, если проблема повторится.

2. Я запустил «git ls-files -v» в каталоге и задаюсь вопросом, поскольку я сделал «git rm» в файле .gitignore, не должен ли он быть указан с ‘R’?

3. @UnhandledException: Нет, потому что эта форма git ls-files просматривается только в индексе. Файл в индексе никогда не удаляется: он либо есть в индексе, либо его там нет, и это покрывает все возможности.