Я только что столкнулся с ситуацией, которая кажется мне нелогичной с Git. У меня есть репо с большим количеством коммитов, поэтому на этом этапе у него только одна ветка (мастер).
Предположим, что в этой ветке есть файл с именем MyFile.txt. Теперь мне нужно создать другую ветку, потому что я хочу внести некоторые изменения в несколько файлов, и я не хочу делать это основной веткой напрямую, поэтому я запускаю:
git checkout iss53
Теперь схема выглядит так:
Хорошо, я переключился на ветку iss53, я запускаю ls -l
и MyFile.txt. Одним из изменений является удаление файла MyFile.txt, поэтому:
git rm MyFile.txt
Хорошо , запуск ls -l
снова показывает, что MyFile.txt больше нет. Итак, я переключаюсь обратно в главную ветку:
git checkout master
Но ... файл MyFile.txt также исчез. Моя логика говорит, что если я удалил файл в ветке, он должен применяться только к этой ветке, так почему же файл удаляется и из основной ветки? Обратите внимание, что я еще не делал никаких коммитов, просто разветвляюсь.
Примечание: оба изображения взяты из Git-scm.