Итак, я нахожусь в ветке, назовем ее feature/PRO-10, и я хочу переключиться на другую ветку, чтобы быстро проверить состояние фрагмента кода. Я делаю git stash, чтобы сохранить свои изменения, а затем git checkout bugfix/PRO-13, чтобы перейти в ветку, код которой я хочу просмотреть. Я заканчиваю то, что хочу сделать в этой ветке (без каких-либо изменений), и делаю git checkout feature/PRO-10, чтобы вернуться в ветку, над которой я работал. Я собираюсь сделать git stash pop, но подождите! Есть огромное количество измененных и неотслеживаемых файлов, а также других изменений.

Как они появились? Я никогда не делал никаких слияний. Возможно, я сделал git pull, чтобы быть в курсе последних событий с bugfix/PRO-13, но я не понимаю, почему это привело бы к таким изменениям, которые следуют за мной в моей исходной ветке.

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

Откуда берутся эти изменения и безопасно ли от них избавиться?

git
3
John Dorean 18 Авг 2014 в 19:42
После git stash, что показывает git status?
 – 
ABMagil
18 Авг 2014 в 19:44
Он показывает nothing to commit (working directory clean). Изменения, которые волшебным образом всплыли, - это изменения, совершенно не связанные ни с чем, что я спрятал.
 – 
John Dorean
18 Авг 2014 в 19:45
Какие измененные и неотслеживаемые файлы вы видите после переключения на исходную ветку? Могли ли они быть изменены раньше? Вы случайно не apply или pop свой тайник, пока вы были в другой ветке bugfix/PRO-13?
 – 
gravetii
18 Авг 2014 в 19:49
Они кажутся изменениями, относящимися к ветке, на которую я переключился (в этом сценарии bugfix/PRO-13). Как будто я переключился на эту ветку, снял все эти изменения, переключился обратно на свою ветку разработки, и внесенные мной изменения пришли со мной.
 – 
John Dorean
18 Авг 2014 в 19:50
Когда вы говорите «переключился обратно на мою ветку разработки, и изменения, которые я вытащил, пришли со мной», вы имеете в виду объединенные изменения или неотслеживаемые и измененные файлы, которые вы упомянули в своем вопросе?
 – 
gravetii
18 Авг 2014 в 19:52

1 ответ

Лучший ответ

Когда вы git checkout, git пытается удалить то, что не существует в целевой ветке. Если у вас запущен антивирусный сканер, он оставит их позади или предложит вам. Если вы уверены, что у вас все спрятано или зафиксировано, вы можете git reset --hard избавиться от этих брошенных файлов. Однако будьте осторожны, поскольку здесь конкретно говорится «отменить все локальные изменения без предупреждения», поэтому убедитесь, что это действительно то, что вы хотели сделать.

0
robrich 19 Авг 2014 в 02:46