2016-12-22 11 views
3

Я иногда случайно набираю git commit -amend, когда я действительно хотел git commit --amend. Git обнаруживает это и спрашивает меняgit commit --amend опасен

$ git commit -amend 
error: did you mean `--amend` (with two dashes ?) 

Это замечательно.

Однако иногда я пишу git commit -ammend, а затем git просто согласится с этим и рассмотрит мою орфографическую ошибку как git -a -m "mend", так что она просто берет сообщение с сообщением «починка».

Я ищу способ остановить git. Я попытался определить псевдоним для git commit -ammend, но пока не сработал. Есть ли у вас предложения по решению этой проблемы?

+0

Обратите внимание, что последствия запуска 'git commit -ammend' не так катастрофичны, как вы думаете. Исходная фиксация - это родитель того, который вы только что создали по ошибке; это никуда не денется. – Jubobs

+0

@Jubobs Я согласен, но все же это неприятность. – codingdave

+0

@ Marina-MSFT Пожалуйста, внимательно прочитайте. Это то, что я написал также. Btw: Im с использованием git версии 2.10.2.windows.1. – codingdave

ответ

3

git commit --amend (правильно написано) на самом деле более опасно, чем git commit -a -m "mend". Первый будет переписывать существующую фиксацию, заменяя ее новым фиксацией, так что это более или менее разрушительная команда. Последний, однако, будет только создать фиксацию, которую вы не намеревались сделать. Это конструктивная команда, которая не переписывает любую существующую историю, а просто добавляет к ней.

Добавление фиксации, которую вы не намеревались добавить, возможно, назойливое, но не очень проблематичное вообще. Вы можете просто отменить это совершение (без потери содержимого) с помощью git reset --soft HEAD~1. Это приведет к сбросу указателя перехода на фиксацию раньше, не затрагивая ваш рабочий каталог.

Конечно, вы также можете отменить поправку на фиксацию, но это более разрушительная команда, с которой вам нужно быть немного осторожным.

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

То, что я лично рекомендовал бы, особенно если вы обнаружите, что исправляете фиксации чаще, для создания псевдонима для git commit --amend. Я лично использую git amend. Вы можете установить это с помощью следующей ocmmand:

git config --global alias.amend "commit --amend" 

Вы также можете добавить -C HEAD, если вы не хотите, чтобы вызвать редактирования, но просто хочу, чтобы сохранить первоначальный коммита (я делаю это много, так что это псевдоним, который я использую):

git config --global alias.amend "commit --amend -C HEAD" 
+0

'git commit --amend' не является разрушительным. – Jubobs

+0

@Jubobs Создает новый объект commit с другим идентификатором и заменяет старый на новый. Это технически так же разрушительно, как сброс указателя ветвления или удаление ветки. Можете ли вы восстановить исходные данные? Конечно, но это не делает команду менее разрушительной. – poke

+0

Это не так разрушительно, как, например, 'git clean -f' или' git reset --hard HEAD', так как вы можете вернуться в исходное состояние с правильной последовательностью команд Git-fu; это то, что я имею в виду. – Jubobs

 Смежные вопросы

  • Нет связанных вопросов^_^