Я использую Sourcetree для Windows для git-репозитория и хотел бы отменить необъявленный коммит.
Это возможно? Если я делаю «отменить коммит», он создает второй коммит, который отменяет первый коммит, но я не хочу, чтобы первый коммит вообще появлялся в моем контроле исходного кода.
Я также мог бы удалить свой локальный репозиторий и вытащить его снова без локальной фиксации, но, может быть, есть другой способ?
atlassian-sourcetree
datasourcecontrol
deimos1988
источник
источник
Ответы:
Мягкий сброс сохранит ваши локальные изменения.
Источник: https://answers.atlassian.com/questions/153791/how-should-i-remove-push-commit-from-sourcetree
редактировать
About
git revert
: эта команда создает новый коммит, который отменяет другие коммиты. Например, если у вас есть фиксация, которая добавляет новый файл,git revert
может быть использована для фиксации, которая удалит новый файл.О применении мягкого сброса: Предположим , у вас есть коммиты
A
вE
(A---B---C---D---E
) , и вы хотите , чтобы удалить последний коммит (E
). Затем вы можете сделать программный сброс для фиксацииD
. При мягком сбросе коммитE
будет удален из git, но локальные изменения будут сохранены. Есть больше примеров в документации git reset .источник
Если вы выберете запись в журнале, к которой хотите вернуться, то можете нажать «Сбросить до этого коммита». Используйте эту опцию только в том случае, если вы не продвигали изменения обратного принятия. Если вы беспокоитесь о потере изменений, вы можете использовать программный режим, который оставит набор незафиксированных изменений (то, что вы только что изменили). Использование смешанного сбрасывает рабочую копию, но сохраняет эти изменения, а хард просто избавится от изменений полностью. Вот несколько скриншотов:
источник
Если вы хотите удалить коммит, вы можете сделать это как часть интерактивной перебазировки. Но делайте это с осторожностью, чтобы не испортить репо.
В Sourcetree:
Посмотрите этот пост в Atlassian, чтобы узнать больше об интерактивном перебазировании в Sourcetree.
источник
Если вы находитесь в другой ветке, вам нужно сначала «проверить этот коммит» для коммита, который вы хотите удалить, и только потом «сбросить текущую ветку на этот коммит», выбрав предыдущий фиксацию, будет работать.
источник