В git есть ли способ эффективно сбросить —soft / revert; revert-n без изменения истории?

#git #git-reset

Вопрос:

Хорошо, я думаю, что это будет невозможно, но вот сценарий:

Я занимался парной программой, и мне пришлось разбивать пары. Я посвятил свою работу незавершенной, чтобы другая пара могла продолжить, пока меня не будет, но они тоже не смогли над этим поработать. Теперь это действительно помогло бы работать с того места, где я был до того, как совершил преступление. Другими словами, было бы неплохо, если бы мой git status выглядел так, как будто я бегал git reset --soft head~ . Но так как они уже вытащили, я не хочу менять историю, работая поверх фактического git reset --soft head~ .

Меня вполне устраивает, что там находится эта НЗП. Что мне не нравится, так это то, что моя среда разработки не показывает никаких изменений. Я знаю, что мог бы вернуться, а затем отменить возврат без фиксации, но есть ли лучший способ?

Комментарии:

1. Если они на самом деле еще не работали над этим, не могли бы вы просто попросить их вытащить новую версию истории, прежде чем они начнут? В противном случае это обязательство должно будет навсегда остаться в истории.

2. Я не понимаю, в чем проблема. Фиксация- это «где я был до того, как совершил». Вот что такое обязательство. Так что просто продолжай работать. В чем проблема? Вы расстроены, потому что это обязательство по НЗП? Не будь. Ты неправильно меня понял, Мерзавец. Совершайте это рано и часто! Не каждое обязательство должно быть высшим совершенным выражением какого-то золотого состояния.

3. @мэтт отредактировал последний абзац

4. Да, но вы добавили предложение, которое я не понял: «Что мне не нравится, так это то, что моя среда IDE не показывает изменений» Извините, но это мне ничего не говорит.

5. Похоже, вы используете статус git в качестве прокси для «файлов, над которыми я работаю». Это нормально, когда это работает, но вы не должны откладывать фиксацию только потому, что не хотите, чтобы ваша среда разработки перестала показывать файлы так, как вы хотите. Поищите лучшее решение в своей среде разработки. Там может быть функция отображения последних измененных файлов, или, может быть, вы могли бы создать группу псевдонимов для файлов, которые вас интересуют, или что-то еще.

Ответ №1:

Чтобы избежать переписывания перенесенной истории branch1 , вместо этого создайте новую ветвь:

 git switch branch1 git switch -c branch2 git reset --soft @~  

Теперь ваш мир выглядит точно так же, как и за мгновение до того, как вы совершили branch1 преступление .