Есть ли простой способ отказаться от всех изменений, которые не были поставлены без предварительной фиксации последнего?Отменить все неустановленные изменения без фиксации?
Например, предположим, что A
является гусеничный файл, как в
% git init -q
% echo "state 1" > A
% git add A && git commit -q -m 'initial commit'
% cat A
state 1
Следующая один модифицирует A
, и этапы его:
% echo "state 2" > A
% git add A
% cat A
state 2
Наконец, один модифицирует A
в третий раз, но это время A
остается неустановленным:
% echo "state 3" > A
% cat A
state 3
Как можно вернуть A
в его состояние, а именно состояние 2.
EDIT: Я немного изменил последовательность кода, надеюсь, теперь это яснее. Я также опубликовал решение, которое произошло со мной после того, как я опубликовал вопрос. Это решение поражает меня как круговое движение (должно быть что-то более прямое), но, по крайней мере, он ясно показывает состояние, в котором я хочу, чтобы A
закончил работу, как в рабочем каталоге, так и в индексе.
Извините, но рабочий процесс, который вы опубликовали, не отражает тот, о котором я спрашивал. В моем вопросе 'A' проходит три разных состояния: первая была совершена; второй был поставлен; третий - тот, который находится в текущем каталоге. Я хочу восстановить второй (так, чтобы он не только был поставлен в индексе, но и в рабочем каталоге). После того, как я опубликовал вопрос, я подумал о решении, которое я опубликовал. Решение является уродливым, но, по крайней мере, оно ясно показывает, что я пытался выяснить, как это сделать. – kjo
@kjo - Ваш вопрос непонятен мне - по крайней мере, из начального вопроса, который вы опубликовали. У вас есть файл 'A', который был первичным, и вы его устроили, и у вас есть некоторые неустановленные изменения, которые не были зафиксированы? И вы хотите восстановить версию файла на шаге 2 - где вы просто поставили, но не зафиксировали? Можете ли вы это подтвердить? Я могу обновить пример. – Tuxdude
извините за замешательство; Надеюсь, я отредактировал оригинал, чтобы сделать его более ясным. – kjo