Я просто изучаю Git, проходя через учебник. Я в ветке seo_title, и у меня есть незафиксированные изменения в файле mission.html. Я сделал git checkout master
, ожидая получить предупреждение об изменениях, не поставленных для фиксации, никаких добавленных изменений и т.д., Однако вместо этого он пошел вперед и переключил ветки с сообщением:
M mission.html
Switched to branch 'master'
Тогда, когда я сделал git diff mission.html
, он показал мне, что рабочий каталог все еще содержит изменения, которые я сделал, пока я проверил другую ветку.
Что мне не хватает?
Для чего это стоит, я использую Git Bash в Windows.
EDIT: изменения в файле mission.html также не были добавлены в индекс промежуточного уровня.
РЕДАКТИРОВАТЬ 2: Я думал, что правильный ответ был правильным, но при дальнейшем расследовании он не соответствует поведению, которое я вижу. Вот более подробное описание того, что я делаю:
top_directory(master) > git branch new_branch_1
top_directory(master) > git branch new_branch_2
top_directory(master) > git checkout new_branch_1
(открыть блокнот ++ и изменить resources.html, сохранить)
top_directory(master) > git status
# On branch new_branch_1
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed
# (use "git checkout -- <file>..." to discard changes in wo
#
# modified: resources.html
#
no changes added to commit (use "git add" and/or "git commit
top_directory(new_branch_1) > git checkout new_branch_2
Здесь я ожидаю, что Git возразит и скажет мне, чтобы он был заблокирован или зафиксирован, поскольку new_branch_1 и new_branch_2 имеют разные версии resources.html, но он просто переключается на новую ветку без предупреждения, и она приносит незафиксированные изменения вдоль:
M resources.html
Switched to branch 'new_branch_2'
top_directory(new_branch_2) > git status
# On branch new_branch_2
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: resources.html
#
no changes added to commit (use "git add" and/or "git commit -a")
Есть ли режим или параметр, который заставит его вести себя таким образом, а не предупреждать? Или я все еще не понимаю сценарий?
ИЗМЕНИТЬ 3: Я понял это сейчас. Самый верный ответ был прав, см. Мой последний комментарий к этому ответу.