К сожалению, это происходит со мной довольно регулярно, и я использую git stash
, если я осознал свою ошибку до git commit
и использую git cherry-pick
, в противном случае обе команды довольно хорошо объясняются в других ответах
Iхотите добавить пояснение для git checkout targetBranch
: , эта команда сохранит ваш рабочий каталог и промежуточный снимок, только если targetBranch имеет ту же историю, что и ваша текущая ветвь
Если у вас нетВы уже зафиксировали свои изменения, просто используйте git checkout, чтобы перейти к новой ветви , а затем зафиксируйте их как обычно
@ Заявление Амбер не ложно, когда вы переходите к newBranch , git checkout -b newBranch
, создан новый указатель, который указывает на тот же коммит, что и ваша текущая ветвь.
Фактически, если у вас есть другая ветвь, которая делится историей с вашей текущей ветвью(оба указывают на один и тот же коммит) вы можете «переместить свои изменения» на git checkout targetBranch
Однако, как правило, разные ветви означают разную историю, и Git wiЯ не позволю вам переключаться между этими ветками с грязным рабочим каталогом или промежуточной областью.в этом случае вы можете сделать git checkout -f targetBranch
(очистить и выбросить изменения) или git stage
+ git checkout targetBranch
(очистить и сохранить изменения), просто запуск git checkout targetBranch
выдаст ошибку:
ошибка: ваши локальные изменения в следующих файлах будут перезаписаны извлечением: ... Пожалуйста, передайте изменения или сохраните их, прежде чем переключать ветки.Отмена