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