Как удалить непрошедшую исходящую фиксацию в Visual Studio?

119

Я случайно отправил поэтапное изменение в новой ветке Visual Studio 2017 в свой локальный репозиторий. Он не был отправлен в удаленный репозиторий. Я хочу избавиться от этого, но не могу найти способ сделать это. Я перебрался с локальной основной ветки на новую. Потом удалил новую ветку. Но Outgoing Commits все еще показывает это. Как удалить или вернуть обратно?

введите описание изображения здесь

Тони Генрих
источник
Спасибо за этот вопрос, у меня был такой же вопрос
Имран Ризви,

Ответы:

185

Откройте вкладку истории в Team Explorer с плитки «Филиалы» (щелкните правой кнопкой мыши свою ветку). Затем в истории щелкните правой кнопкой мыши фиксацию перед той, которую вы не хотите отправлять, и выберите «Сброс». Это вернет ветку к этому коммиту и избавит от лишнего коммита, который вы сделали. Таким образом, чтобы выполнить сброс перед заданной фиксацией, вы должны выбрать его родителя.

В зависимости от того, что вы хотите сделать с изменениями, выберите жесткий , чтобы избавиться от них локально. Или выберите soft, который отменит фиксацию, но оставит ваш рабочий каталог с изменениями в вашей отмененной фиксации.

веселый
источник
23
Стоит выделить жирным шрифтом часть, где ** вы должны выбрать СБРОС для РОДИТЕЛЯ испорченной фиксации ** - как ни странно, VS2017, сразу после того, как вы сделаете фиксацию, предлагает вам пункт меню, который выполняет сброс targetd при фиксации вы только что сделали (бездействие) - я потратил несколько минут, пока не нашел ваш пост и не понял, что мне нужно сбросить [To] родительский коммит. Пункт меню "Сброс" немного неудачно сформулирован - похоже, что он будет сбросить конкретную фиксацию ==, подразумевая, что она должна использоваться в этой фиксации. Если бы это был Reset To, я думаю, я бы понял это быстрее
Кай Джард
1
(@JH) Спасибо за ответ. .. atCJ Спасибо за комментарий. atJH Спасибо за выделение этой части ... atEverybody .... это та часть, на которой я застрял .... и я имею в виду застрял. #freedom
granadaCoder
Именование соответствует тому, как git вызывает команду. Если вы редактировали файлы, они также будут сброшены. Если у вас есть промежуточные файлы, они также будут сброшены. Вот почему есть сброс и для последней фиксации. Он сбрасывается до этой фиксации.
jessehouwing
1
Полезно знать. Спасибо за ответ
Rob C
Большое спасибо, это помогает
Ашиш Камбл
72

Я не смог найти ни одного хорошего ответа, который помог бы мне избавиться от этой проблемы.

Допустим, имя ветки, в которой вы случайно зафиксировали изменения, - master. Четыре простых шага оказались для меня целым миром:

  1. Перейти к филиалам
  2. Выберите или создайте любую ветку кроме master
  3. Удалить локальную / рабочую версию master
  4. Перейти к мастеру с remotes/origin
Легион Хаоса
источник
6
Это ответ , который работает, вы не должны толкатьrevert
sojim
2
это работает, но вы застряли, когда хотите только некоторые (не все) конкретные коммиты из исходящих коммитов.
KatariaA
1
Только что получил пару голосов против. Комментарии были бы замечательными.
Легион Хаоса
1
Работает. Чистое, быстрое и простое решение.
Том Том
2
ОМГ СПАСИБО! Я никогда не тратил 45 минут на отмену изменений до сегодняшнего вечера. Ваш комментарий спасает положение.
PBJ
5

TL; DR:

Используйте git reset --soft HEAD~в cmd из папки .sln


Я столкнулся с этим сегодня и был поражен тем, что это VSCodeпредполагает такое, в то время как его старший брат Visual Studio- нет.

Большинство ответов были полезными; если у меня будет больше коммитов, которые были сделаны раньше, потерять их все было бы неприятно. Более того, если VSCodeэто сделать за полсекунды, это не должно быть сложным.

Только ответ jessehouwing был наиболее близок к простому решению.


Предполагая, что нежелательная фиксация (-ы) произошла последней, вот как я ее решил:

Перейти к Team Explorer-> Sync. Там вы увидите все коммиты. Нажмите Actionsраскрывающийся список иOpen Command Prompt

пример с нежелательной фиксацией

Вам будет предложено окно cmd, там напишите git reset --soft HEAD~. Если есть несколько нежелательных коммитов, добавьте сумму после ~(т.е. git reset --soft HEAD~5)


(Если вы не используете git, проверьте разговорный язык).

Надеюсь, это поможет, и, надеюсь, в следующей версии команда VS добавит его встроенным

Цахи Лех
источник
3

Предполагая, что вы отправили на сервер самые последние изменения:

  1. Закройте Visual Studio и удалите локальную копию проекта.
  2. Откройте Visual Studio, перейдите на вкладку Team Explorer, щелкните Управление подключениями. (вилка)
  3. Щелкните стрелку раскрывающегося списка рядом с полем «Управление подключениями», «Подключиться к проекту».
  4. Выберите проект, подтвердите локальный путь и нажмите кнопку «Подключить».

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

JB4375
источник
0

Перейдите на вкладку Team Explorer и нажмите Ветви. В ветках выберите свою ветку из пультов дистанционного управления / происхождения. Например, вы хотите сбросить главную ветку. Щелкните правой кнопкой мыши основную ветку в remotes / origin, затем выберите «Сброс», затем нажмите «Удалить изменения». Это сбросит вашу локальную ветку и удалит все локально зафиксированные изменения.

Алексискалингасан
источник
0

Попробуйте переустановить локальную главную ветку на удаленную / исходную главную ветку и разрешить любые конфликты в процессе.

оранжевый
источник
-1

Здесь у вас есть 2 варианта: либо отменить все исходящие коммиты, либо отменить конкретный коммит.

1- Отменить все исходящие коммиты:

Чтобы отменить все исходящие коммиты Например, если у вас есть локальная ветка с именем master из удаленной ветки, вы можете:

1- Переименуйте локальную ветку с master на что угодно, чтобы вы могли ее удалить. 2- Удалите переименованную ветку. 3- создать новую ветку от мастера

Итак, теперь у вас есть новая ветка без ваших коммитов ..

2- Отменить конкретную фиксацию: чтобы отменить конкретную фиксацию, вы должны отменить ненужное:

1- Дважды щелкните ненужную фиксацию. Дважды щелкните ненужную фиксацию 2- Нажмите «Вернуть» Нажмите «Вернуть»

Но, к вашему сведению, отмененная фиксация появится в истории ваших коммитов вместе с откатной фиксацией.

Мохаммад Абу Салум
источник