Как откатить все до предыдущего коммита

Недавно в проекте с несколькими людьми была сделана фиксация, как показано на изображении ниже. Отмеченный красным, вы можете увидеть фиксацию с описанием/комментарием «Объединить?».

Эта фиксация добавила множество файлов и изменила множество других, и ее никогда не планировалось.

Используя atlassian-sourcetree, что мне делать? нужно сделать, чтобы откатить все обратно к коммиту, выделенному синим цветом? (Как видно на скриншоте, я отстал на 8 коммитов.)

проблемы исходного дерева


person captainrad    schedule 12.03.2014    source источник
comment
Я не знаю об этой программе, но в git bash вы можете сделать git reset --hard [the hash of the commit].   -  person PlasmaPower    schedule 13.03.2014
comment
удаляет ли «жесткий» все другие коммиты, сделанные после «плохого коммита»?   -  person captainrad    schedule 13.03.2014
comment
Да, это вернет все к тому, что было сразу после того, как вы передали коммит.   -  person PlasmaPower    schedule 13.03.2014
comment
Ничто, кроме сборки мусора, на самом деле удаляет коммиты в git, но git reset перемещает указатель ветки, и как только коммиты выходят за пределы любой ветки, они становятся готовыми для сборки мусора. (Рефлог ветки хранит их в течение срока действия по умолчанию, равного 30 дням, прежде чем они действительно будут собраны.) Таким образом, они фактически исчезли, но в экстренных случаях вы можете не удалять их на месяц или около того.   -  person torek    schedule 13.03.2014
comment
Щелкните правой кнопкой мыши -> Обратный коммит -> Нажать. flummox-engineering.blogspot. ком/2014/10/   -  person Kanagavelu Sugumar    schedule 08.01.2018


Ответы (2)


Если вы подтолкнули коммиты вверх по течению...

Выберите фиксацию, к которой вы хотите вернуться, и отмените изменения, нажав Reverse File, Reverse Hunk или Reverse Selected Lines. Сделайте это для всех коммитов после коммита, к которому вы также хотели бы вернуться.

обратный материалобратная фиксация

Если вы не выдвинули коммиты вверх по течению...

Щелкните правой кнопкой мыши коммит и выберите Reset current branch to this commit.

сбросить ветку для фиксации

person 0xcaff    schedule 12.03.2014
comment
Этот ответ устарел. - person Yeats; 26.06.2016
comment
Идея та же. Не стесняйтесь исправить это @Yeats - person 0xcaff; 26.06.2016
comment
что дальше? после того, как я сбросил ветку на предыдущую фиксацию, она просит меня вернуть все обратно к текущей версии. я не могу ничего толкать - person Neville Nazerane; 08.10.2016
comment
@NevilleNazerane Толчок силы. - person 0xcaff; 08.10.2016
comment
я пробовал это .. в графическом интерфейсе он был неактивен. Терминал тоже не работает - person Neville Nazerane; 09.10.2016
comment
Для тех, у кого элементы в контекстном меню SourceTree выделены серым цветом: я перезапустил SourceTree, и он вернулся в нормальное состояние. - person Lesley; 15.01.2018
comment
@Yeats Это отлично сработало для меня. Я использую Version 2.3.2. Изображения не точны, но формулировка в раскрывающемся списке такая же. - person davidhartman00; 23.10.2019
comment
В августе 2020 года этот метод по-прежнему считался полезным «быстрым» для небольшого изменения в 1 файле. Обратный коммит или сброс ветки, вероятно, в целом лучший метод. Однако не видел опции «обратный файл» (v.3.3.9). - person codah; 18.08.2020
comment
Однажды вы спешите, вы делаете ошибку, ищете решение, и кто-то из интернета публикует именно то, что вам нужно, и прекрасно объясняет. Спасибо :-) - person Oscar Foley; 17.11.2020

Я искал несколько вариантов, чтобы сбросить мой git на конкретную фиксацию, но большинство из них не очень удовлетворительны.

Обычно я использую это, чтобы сбросить git на конкретную фиксацию в дереве исходного кода.

  1. выберите фиксацию для сброса в исходном дереве.

  2. В раскрывающихся списках выберите активную ветвь, сначала только для родителей

  3. И щелкните правой кнопкой мыши «Сбросить ветку для этой фиксации» и выберите вариант жесткого сброса (мягкий, смешанный и жесткий)

  4. а затем перейдите к терминалу git push -f

Вы должны быть готовы!

person Siddhartha Thota    schedule 11.09.2017
comment
Ответ безопасен, только Если вы не отправили коммиты вверх по течению - person Michael Freidgeim; 22.11.2017
comment
Ответ работает только в том случае, если вы не передавали коммиты вверх по течению. - person mgyky; 20.09.2019
comment
этот ответ также работает после нажатия коммитов вверх по течению - person shalonteoh; 27.11.2019
comment
Этот ответ обеспечивает полный откат для коммитов, сделанных после выбранного коммита. - person Takatalvi; 12.12.2020