#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
просматривается только в индексе. Файл в индексе никогда не удаляется: он либо есть в индексе, либо его там нет, и это покрывает все возможности.