Есть ли способ отменить коммит, чтобы моя локальная копия сохранила изменения, сделанные в этом коммите, но они стали не зафиксированными изменениями в моей рабочей копии? Откат коммита приведет вас к предыдущему коммиту - я хочу сохранить внесенные изменения, но перенес их в неправильную ветку.
Это не было выдвинуто, только совершено.
git reset --soft
иgit reset --mixed
оба делают это (немного по-разному), см. git-resetОтветы:
Есть много способов сделать это, например:
если вы еще не опубликовали коммит публично:
Вот и все, изменения вашего коммита будут в вашем рабочем каталоге, тогда как коммит LAST будет удален из вашей текущей ветки. Смотри git reset man
В случае, если вы сделали публичный пуш (в ветке с именем 'master'):
вернуть коммит нормально и нажать
Теперь, если вы хотите, чтобы эти изменения были локальными изменениями в вашей рабочей копии («чтобы ваша локальная копия сохранила изменения, сделанные в этом коммите») - просто отмените коммит с
--no-commit
опцией:Я создал небольшой пример: https://github.com/Isantipov/git-revert/commits/master
источник
reset
упомянутая команда говорит «мягко» сбросить до 1 об. перед заголовком, что сохраняет все локальные изменения. это не было сразу видно для использования в SourceTree. просто убедитесь, что вы мягко сбрасываете на предыдущую версию, а не на ту, которую пытаетесь сбросить"Already up to date"
при выполнении слияния.Если вы отправили изменения, вы можете сделать
undo
это и переместить файлы обратно на сцену, не используя другую ветку.Это создаст файл патча, который содержит последние изменения ветки. Затем он отменяет изменения. И наконец, примените файлы исправлений к рабочему дереву.
источник
rm patch
тоже хочешьДля случая: «Это не было выдвинуто, только совершено ». - если вы используете IntelliJ (или другую интегрированную среду JetBrains) и еще не отправили изменения, вы можете сделать следующее.
Выполнено.
Это «отменит» ваши изменения и вернет ваш git-статус на уровень, предшествующий вашей последней локальной фиксации. Вы не потеряете сделанные вами изменения.
источник
git reset --soft "HEAD^"
Windows, кстати. :)Со мной в основном это происходит, когда я помещаю изменения в неправильную ветку и осознаю это позже. И следующие работы в большинстве случаев.
источник
2020 простой способ:
Зафиксируйте хэш последнего коммита, который вы хотите сохранить.
источник
git checkout branch_name
git merge --abort
мерзавец статус
git reset --hard origin / branch_name
источник