Я сделал коммит и сразу после того, как заметил, что я коммитил изменения, которые я не хочу пушить на удаленку .
Есть ли способ отменить то же самое, сохранив эти изменения в моей рабочей копии, чтобы правильно их повторно зафиксировать?
Я сделал коммит и сразу после того, как заметил, что я коммитил изменения, которые я не хочу пушить на удаленку .
Есть ли способ отменить то же самое, сохранив эти изменения в моей рабочей копии, чтобы правильно их повторно зафиксировать?
Если вы хотите сохранить изменения:
Если вы также не хотите загружать коммит (просто переместите голову на предыдущий):
И если вы не хотите их сохранять (и вернуться к состоянию предыдущей фиксации, полностью уничтожив последнюю фиксацию, как будто ее никогда не существовало):
Команда
git reset <commit>
Чтобы специально отменить последнюю фиксацию, вы можете использовать
HEAD~1
Например, чтобы вернуться к предыдущему коммиту, вы можете использовать команду sgte:
Параметр
--mixed
позволяет сохранить изменения в рабочем дереве, чтобы их можно было изменить позже, однако, поскольку это режим по умолчанию, в этом нет необходимости.В этом случае мне кажется наиболее подходящим вариантом, так как вы хотите исправить коммит, поэтому вам нужно вернуть индекс, чтобы исправить изменения.
Некоторые из необязательных параметров:
--soft
он не изменяет ни рабочее дерево, ни индекс. Просто измените HEAD на указанный коммит.--mixed
возвращает индекс, но не рабочее дерево, так что изменения остаются готовыми к изменению и, возможно, к повторной фиксации. Это опция по умолчанию.--hard
Восстанавливает индекс и рабочее дерево, так что изменения полностью теряются.Вы можете просмотреть полный синтаксис в документации git-reset .
Вы просто делаете мягкий сброс, который сохраняет изменения локально, но отменяет фиксацию, затем делает все, что вы хотите, и снова фиксирует, как вы хотели в первый раз.
Это правильный способ сделать это:
очень важно, как упоминает другой пользователь, эта опция применяется, когда вам нужно сохранить изменения.