Хитрость в том, чтобы понять, что у вас есть в ваших файлах в рабочем дереве, если вы попытаетесь извлечь другую ветку, git увидит, является ли измененный файл тем же (без ваших незафиксированных изменений) куда вы хотите перейти и в редакцию HEAD .... если это то же самое, то git понимает, что переключение, которое вы просите сделать, не является проблемой ... изменения вашего рабочего дерева (и новые файлы) будут сопровождать васна выключателе.Однако, если измененный файл не одинаков между HEAD и местом, куда вы хотите перейти, git откажется от оформления заказа (если, конечно, вы не принудительно).Итак, в общем, git старается следовать вашим командам настолько хорошо, насколько это возможно, и удерживает вас (не желая) от выполнения вашей работы (особенно от того, что еще не было совершено).Теперь ... сказав это, какая часть описанного вами процесса заставляет вас чесать голову?Это часть git checkout -- newfile
?Потому что именно так вы просите git установить файл таким, каким он является на ревизии HEAD (другими словами, не обращайте внимания на изменения, которые я внес в этот файл, и установите его так, как он был до того, как я его отредактировал ... он может дажеиспользоваться для установки содержимого файла таким, как оно есть на другой branch / tag / revision .... и в этом случае вы поместите файл в индекс, ожидающий подтверждения).