Я только что обновился до версии 2.1.0. (А также к emacs 25.0.50 и git 2.3.1.)
Ранее в *magit*
буфере я мог:
- Выберите кусок в области Unstaged.
- Введите vи ответьте да, чтобы изменить это.
Это было удобно.
Но теперь в Magit 2.1.0 он дает ошибку: "Cannot reverse unstaged changes"
.
Зачем?
Получив подсказку из сообщения об ошибке, я обнаружил, что все еще могу сделать это, хотя и несколько «задом наперед», с помощью следующих шагов:
- sтейдж ломоть (Чувствует себя задом наперед; приближает его к совершенному состоянию.)
- Перейдите вниз и выберите его в области «Постановка».
- Нажмите v, ответьте да.
- Тем не менее, кусок все еще в uстадии постановки, так что, наконец, я должен поставить кусок.
Это ошибка, или это намеренно и / или я плотный? Если последнее, вы можете помочь мне понять?
ОБНОВЛЕНИЕ: После полного RTFinfo-я вижу, что есть две команды:
- v
magit-reverse
Отмените изменение в точке рабочего дерева. - k
magit-discard
Удалить изменение в точке из рабочего дерева.
Кажется, это k magit-discard
делает то, что я привык vделать раньше. Это работает на необработанном ломоть.
Поэтому практически мне просто нужно переучить свою мышечную память, чтобы использовать k. Я мог бы опубликовать это в качестве самостоятельного ответа. Но я думаю, что мне все еще любопытно обоснование, потому что я представляю, что понимание поможет мне лучше понять магию.
k
также отменяет несогласованные изменения в более ранних версиях magit и кажется подходящей командой для того, что вы делаете.v
предназначен для git revert: создание нового коммита, который делает противоположное изменение предыдущего. Я полагаю, что отмена изменения, которое на самом деле не было зафиксировано, - это то же самое, что отмена его, но «возврат» имеет особое значение как команда git.v
был привязанmagit-revert-item
(оттуда происходит "обратная" терминология, @PythonNut), а для неустановленных элементов это использовалосьmagit-discard-item
(как и связаноk
) - см. Строку 4872 здесь . Видимо, я случайно узнал то особое значениеv
, которое сработало, когда я должен был научиться использоватьk
.Ответы:
Magit реализует пять «вариантов применения», описанных в руководстве : этап, нестандартный режим, «регулярное применение», сброс и обратный ход. Первые три должны быть довольно очевидны для большинства пользователей Git. Последние два не существуют в фарфоре Git (в Magit они реализованы с использованием сантехнических команд Git и Emacs Lisp).
Эти два варианта описаны так:
Эти два варианта делают очень разные вещи, поэтому ни один из этих вариантов не должен отступать от другого варианта в тех случаях, когда сам по себе не может быть использован. Сохранение старого поведения (отступление от обратного к отказу в некоторых контекстах) могло бы быть более удобным в краткосрочной перспективе, но в долгосрочной перспективе это мешает пользователям действительно пытаться понять, для чего предназначены эти два варианта.
Сброс намного опаснее обратного . Первый «отбрасывает незафиксированные изменения» (эти изменения теряются, их больше нет нигде), тогда как последний фактически «создает изменения», принимая более старые изменения и делая противоположное в рабочем дереве (старое изменение не теряется, это все еще в коммите или индексе).
Переход от «создания» к «удалению» очень опасен, поэтому Magit больше этого не делает.
Также обратите внимание, что с помощью новых режимов очистки вы можете защитить себя от потери изменений в результате случайного сброса.
источник
Похоже , я случайно узнал , что v, непременно
magit-revert-item
, было использовано , чтобы сделатьmagit-discard-item
в этом особом случае unstaged скряги. Смотрите<=== HERE ===
комментарий, который я положил ниже:Источник: код 1.4.2 .
Но теперь этого не происходит:
Источник: мастер :
Однако kнапрямую связан с
magit-discard-item
. Я должен был научиться использовать это в первую очередь. Это работало до 2.1.0, и все еще работает.В заключение, magit 2.1.0 был значительно переработан. Это неизбежно, что некоторые странные угловые случаи, возможно, не выжили. И, я бы согласился, не нужно выживать. Я заново изучу ключ.
источник