Я думал, что уже неплохо разбираюсь в Git, но сейчас я был удивлен. Я думал, что ветки будут изолировать изменения от других веток, поэтому я начал большой экспериментальный рефакторинг в новой ветке. Этот рефакторинг подразумевал перемещение большого количества файлов. Когда я переключился на мастер, я все еще мог видеть изменения!
Я зашел в свой репозиторий песочницы, чтобы воспроизвести проблему:
$ git branch crazy-refactoring
$ git checkout crazy-refactoring
$ rm README
$ git checkout master
$ git status
# On branch master
# Changes not staged for commit:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: README
#
no changes added to commit (use "git add" and/or "git commit -a")
$ ls README
ls: cannot access README: No such file or directory
Почему? Вся суть создания ветки заключалась в том, что я мог попробовать что-то и выбросить это в случае неудачи. Toughts?