В команде
git checkout 4037ec1702bd2fa6a5a15f7413f4ccccb59d356e .
.
является указателем пути.Предоставление спецификатора пути в корне меняет то, что делает checkout
.
Без спецификатора пути checkout
перемещает HEAD
.Это означает, что он либо «проверяет» ветвь, либо «проверяет» фиксацию (которая может быть, а может и не являться вершиной ветви) в состоянии «отсоединенного HEAD».Если вы не укажете git
в противном случае, он предупредит вас перед тем, как прекратить незафиксированные изменения (т. Е. Будет сопротивляться выполнению checkout
).
Но с указателем пути, checkout
обновленийверсия рабочего дерева файла из другой версии.Поскольку эта команда выглядит как явно запрашивающая перезапись рабочих файлов и фактически является способом, с помощью которого вы бы отменили неустановленные изменения, она не настолько осторожна, как другая форма checkout
.
к сожалению, они имеют одно и то же базовое имя команды, потому что они очень разные операции, а последняя гораздо опаснее первой.
Хотя git очень хорошо сохраняет изменения, которые были зафиксированы (или даже спрятаны)), если вы потеряете рабочие файлы, это не поможет.Если не считать решения для внешнего резервного копирования, боюсь, вам, возможно, придется начать все сначала.