Должен ли я не получить "fatal: pathspe c 'file.txt' не соответствует ни одному файлу" в этом сценарии? - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть отслеживаемый файл "file.txt". Я решил физически удалить его, используя Windows файловый менеджер. Затем я делаю «git add file.txt». Разве это не должно вызывать "fatal: pathspe c 'file.txt' не соответствует ни одному файлу", так как файл больше не существует?

Ответы [ 2 ]

2 голосов
/ 25 февраля 2020

Нет. Если у вас есть файл в индексе, и у нет файла в рабочем каталоге, тогда git add будет ставить удаление . (Другими словами, он ведет себя как git rm).

$ rm exists
$ git ls-files --stage exists
100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0   exists
$ git add exists
$ git ls-files --stage exists
$ ls -Flas exists
ls: exists: No such file or directory

Однако, если файл не существует ни в индексе , ни в рабочем каталоге, то git будет ошибка:

$ ls -Flas nonexistent
ls: nonexistent: No such file or directory
$ git ls-files --stage nonexistent
$ git add nonexistent
fatal: pathspec 'nonexistent' did not match any files
1 голос
/ 25 февраля 2020

Разве это не должно вызывать "fatal: pathspe c 'file.txt' не соответствует ни одному файлу", так как файл больше не существует?

Нет, это не должен. file.txt - это файл, который git отслеживает, даже если он не существует в локальной файловой системе. Он существовал , а затем вы удалили его. Если вы запустили git status в этот момент, вы увидите file.txt, помеченный как удаленный, но не подготовленный. Когда вы запустите git add file.txt, а затем git status, вы увидите, что file.txt помечен как удаленный и подготовленный. Затем следующий git commit добавит это изменение в репозиторий, чтобы файл не отображался в репо после этой фиксации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...