git reset <em>commit</em> -- <em>path</em>
означает: скопировать файл path
из commit
в индекс.
Вы не можете отменить это, поскольку он перезаписывает любой файл в индексе для этого пути.
К счастью, вам редко когда нужно , чтобы отменить это, потому что копия, которая была в индексе, вероятно, тоже где-то еще.Если это так, просто скопируйте , который скопирует в индекс.Обычно копия любого файла, содержащегося в индексе, сама является копией какого-либо другого файла: либо копия подтвержденного файла, извлеченная с помощью git checkout
, либо копия файла рабочего дерева, добавленная с помощью git add
.
Если копия, которая была в указателе, больше нигде не существует, вам не повезло.Но это обычно происходит только с git add --patch
или git reset --patch
.
Обновление : я думаю, что намеревался сделать git checkout origin/dev -- package-lock.json
Этоозначает: скопировать файл package-lock.json
из коммита, обозначенного origin/dev
, в индекс, а затем скопировать версию индекса в рабочее дерево. Как и в случае git reset
, это перезаписывает все, что было в индексераньше, и эта часть не может быть отменена.После успешной перезаписи индексной версии он также извлекает файл в рабочее дерево, перезаписывая все, что было в рабочем дереве.Это также не может быть отменено - и это меньше вероятно, что у вас есть копия того, что у вас было в рабочем дереве ранее.Так что будьте еще осторожнее с этим git checkout
, чем с вышеупомянутым git reset
.
В любом случае, если этот равен , что вы имели в виду, вы можете простосделайте это сейчас, переписав все, что вы вставили в указатель ранее, а также переписав копию рабочего дерева.