2016-06-25 2 views
0

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

Сегодня я изменил файл в ветке A и набрал git checkout master , чтобы перейти к мастер-ветке. И git просто, без каких-либо предупреждений, скопировал все изменения из ветки A в главную ветку.

Почему это не работает должным образом?

ответ

2

Он запрашивает только фиксации, отмены или отмены изменений, если проверка ветви будет конфликтовать с изменениями в рабочем дереве. Если конфликт не существует, вы просто будете в ожидании изменений, и вы можете переключиться на любую не конфликтующую ветку.

+0

Итак, почему мои изменения в ветке B применяются к моей главной ветке, когда я переключаюсь на нее? Файл, который я редактировал в B, заменил соответствующий файл в главной ветке. – Julian

+0

На самом деле они не выполняются нигде, поэтому вы только что изменили свое поведение в своем рабочем дереве. Если вы передадите их B, а затем мастер проверки, вы увидите, что они исчезнут. –

+1

Спасибо, что очищает вещи! – Julian

1

Получено сообщение с просьбой приложить или скопировать изменения из git только в том случае, если какое-либо из ваших изменений имеет некоторые конфликты с изменениями с веткой, к которой вы переключаетесь.

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

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