@mxelgin

Как отменить локальный коммит средствами Visual Studio?

Периодически необходимо откатить локальные изменения без потери измененного кода, чтоб подобные откаты не фиксировались в удаленном репозитории.

Как откатить локальные изменения master с помощью VS до состояния origin/master или переопределить кнопку в VS для отката подобным способом как это делается например в TortoiseGit?

По сути, меня интересует смешанная отмена коммита с помощью команды git reset --mixed origin/master вызванная из Visual Studio не прибегая к консоли и сторонним программам и желательно без установки плагинов/расширений и т. п.

66e8f3656b60e961465497.jpeg
  • Вопрос задан
  • 273 просмотра
Решения вопроса 1
sergey-kuznetsov
@sergey-kuznetsov Куратор тега Git
Автоматизатор
Не надо ничего добавлять. В интерфейсе Visual Studio уже всё есть.
Кликаете на коммит, на который хотите сбросить историю и выбираете Reset — Keep Changes (--mixed)
В русском интерфейсе это наверное будет Сброс — Оставить изменения. Аналог смешанного сброса в TortoiseGit
66ea17a6381fa887017520.png
Смешанный режим это --mixed — откатывает коммиты и индекс: оставляет изменения в рабочем каталоге, но очищает индекс. Это режим по умолчанию команды reset без опций.
Мягкий режим это --soft, когда делается всё то же, что и выше, но индекс не трогается.
То что вы отметили стрелкой на скрине в комментариях это вообще revertи он не годится для причесывания истории.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@rPman
Идеологически git это про 'полную фиксацию изменений удаленно', скорее всего ваша задача (не то что описали а что решаете) - это создание своей ветки, работа в ней, с периодичекими объединениями изменений с master.

Я конечно могу придумать конструкцию, когда у вас 2 git репозитария, в который сливаются одни и те же файлы (симлинками на каталоги например), и вы попеременно применяете изменения в одном git но откатываете в другом, но это извращение, а так же из-за использования симлинков можно получить неожиданные ошибки, например когда приложение (visdual studio) неверно отслеживает изменения в каталогах.

p.s. у меня очень похожая конструкция была в eclipse проекте - там был солюшен из десятка проектов, каждый из которых должен был собираться как в консоли так и в ide для поддержки отладки, и структурно в файлах проекта были различия для одновременной поддержки этого, поэтому я собирал в ide симлинками и средствами самой ide проект из файлов и каталогов в другом месте, и оба они были в своих git (изменения, вносимые для работы в ide и отладки было вредно отправлять в центральный git).

задача выполнялась, серьезных проблем не было так как не менялась структура проекта, правились только файлы, поэтому все работало но приходилось вручную следить за порядком комитов и откатов.
Ответ написан
@mxelgin Автор вопроса
Решение найдено после подсказки rPman, в VS 2022 по ссылке нацепил команду git reset --soft origin/master
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы