Git one-liner, чтобы отменить нежелательное изменение субмодуля - PullRequest
0 голосов
/ 08 мая 2019

Итак, допустим, я запутался и запустил git commit -a, случайно совершив изменение подмодуля, которое мне не нужно (вероятно, потому что я запустил git pull и впоследствии забыл запустить git submodule update). Я хочу избавиться от этого изменения. Можно ли использовать для этого однострочник?

То, как я делаю это сегодня, это:

  1. Я запускаю git show, чтобы выяснить, какой был старый хэш
  2. Я cd в подмодуль, и я запускаю git reset --hard OLD_HASH
  3. Вернитесь в родительский каталог и git commit --amend -a

Это слишком много шагов. Неужели нет ничего короче?

NB. Этот вопрос отличается от Как отменить мои изменения в подмодуле git? , где пользователь случайно внес реальные изменения в файлы в подмодуле. В этом случае файлы не были отредактированы в субмодуле; Я только что обновил указатель фиксации в неправильном направлении.

1 Ответ

1 голос
/ 08 мая 2019

Вы можете написать в одну строку, написав скрипт.Сам сценарий неизбежно будет состоять из нескольких строк.Это могут быть три строки, если хотите, или другой набор из трех или около того строк (например, git rev-parse, тщательно сконструированные git update-index и git commit --amend).Вы можете превратить этот скрипт в команду Git (назвав его git-foo и указав его в своем пути, после которого git foo запустит ваш git-foo скрипт) или превратить его в псевдоним Git, используя git config и [alias] section.

Возможно, вы захотите установить свои настройки таким образом, чтобы в будущем это происходило с меньшей вероятностью, например, от submodule.recurse до true.(Обратите внимание, что это влияет на git push, если вы также не установите push.recurseSubmodules; ознакомьтесь со всеми настройками подмодуля в документации git config для получения дополнительной информации.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...