Это было бы из-за разницы между git add .
и git add -A
.
Только git add -A будет записывать новые файлы и удаленные файлы.
Когда вы сделали свой второй git add .
, вот что git status
должен был сказать:
C:\HOMEWARE\git\tests\p2>git status
# On branch exp
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: f2/f1b.txt
#
# Changed but not updated:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: f1/f1a.txt
# deleted: f1/f1b.txt
#
Рабочему дереву был удален первый каталог.
Итак, когда вы вернулись к мастеру, это рабочее дерево было сохранено:
C:\HOMEWARE\git\tests\p2>git checkout master
D f1/f1a.txt
D f1/f1b.txt
Switched to branch 'master'
Отсюда исчезновение 'f1
' ...