Почему Git переключает мои ветки, когда я модифицировал файлы в рабочей папке?

Вопрос:

У меня две ветки. Я изменил некоторые файлы в одной ветке, но не добавил и не зафиксировал их. Изменения указаны только в моей рабочей папке. Изменения находятся в отслеживаемых файлах, но не добавлены или не зафиксированы, изменения находятся только в рабочей папке.

Теперь я проверил другую ветку, и она сработала. Я нахожусь в другой ветке, и изменения, внесенные мной в файлы, все еще находятся в рабочей папке.

Я не понимаю причину этого. Я бы ожидал, что Git откажется переключить ветку и скажет мне, что у меня есть неоправданные изменения, которые я должен совершить или занести или что-то сделать с ними.

Я ожидал, что проверка переписала мою рабочую папку, но мои изменения все еще существуют.

Почему это? Почему мои изменения присутствуют независимо от того, в какой ветки я? Почему Git не говорит мне о наличии модифицированных файлов в моей рабочей папке и отказывается переключать ветку?

Лучший ответ:

Филиалы указывают на фиксации. “Изменение” не является частью ветки, пока вы не совершите фиксацию на этой ветке.

Ваше дерево и индекс не привязаны напрямую к ветке, поэтому, если вы начнете выполнять локальное редактирование, а затем решите, что вы действительно хотите сделать это изменение в другом филиале, вы можете проверить эту ветку и продолжить работу.

Git откажется менять ветки только в том случае, если у вас есть локальные изменения (поэтапные или неустановленные), которые основаны на файлах, которые отличаются между ветвью, из которой вы переключаетесь, и веткой, к которой вы переключаетесь.

Ответ №1

Вероятно, вы имеете в виду не отслеживаемые файлы, а не измененные файлы. Не отслеживаемые файлы, которые никогда не добавляются или не привязаны к какой-либо ветке, и они остаются на месте при переключении ветвей.

Если вы измените отслеживаемый файл, git не позволит вам переключать ветвь, пока вы что-то не сделаете с ней (фиксация, отмена изменения и т.д.).

Оцените статью
TechArks.Ru
Добавить комментарий