Ответ 1
не используйте --hard
вместо --soft
.
Таким образом, если вы хотите удалить свою последнюю фиксацию, вы сделали бы:
git reset --soft HEAD^
Когда я случайно передал файл в неправильную ветвь, я обычно использую git reset --hard HEAD~1
. Однако, используя этот метод, я вообще теряю все файлы. Есть ли способ reset совершить, не теряя отредактированные файлы?
не используйте --hard
вместо --soft
.
Таким образом, если вы хотите удалить свою последнюю фиксацию, вы сделали бы:
git reset --soft HEAD^
Хотя Алекс очень прав, у меня может возникнуть соблазн попробовать другую последовательность:
Если мне нужна фиксация в еще не родившейся ветке:
git branch newbranch
git reset --hard HEAD^
Если мне нужна фиксация в существующей ветке:
git checkout otherbranch
git cherry-pick firstbranch
git checkout firstbranch
git reset --hard HEAD^
Полный пример ответа Alex
git reset --soft HEAD^
git checkout otherbranch
git commit -am "Message"
Обратите внимание, что последний пример будет неудачным, если попытка "поплавки" изменения на другую ветку завершится неудачно из-за конфликтов. Затем вам понадобится приложить/снять/применить, чтобы попасть в разрешение конфликта.
для моего случая я предпочитаю использовать --mixed
вместо того, чтобы найти это простое объяснение
git reset --mixed HEAD^