Документ Атлассиана здесь совершенно неверен.
git checkout <em>tree-ish</em> -- <em>path</em>
копирует указанное path
сначала в ваш индекс (он же промежуточная область), затем из вашего индекса в ваше рабочее дерево. Это перезаписывает все, что было в индексе раньше. tree-ish
- вот как Git-документация означает, что достаточно всего, что найдет коммит или объект дерева коммитов. В основном люди используют идентификаторы хеша коммитов, имена веток и относительные имена, например HEAD~3
, но что-либо из документации gitrevisions достаточно.
(Чтобы проверить фиксацию, коду checkout
нужен хеш коммита, в этом случае подойдет только идентификатор фиксации. Однако для этого конкретного случая ему нужно только найти связанный снимок исходного дерева , связанный с ним с идентификатором коммита. Git может использовать коммит, чтобы найти дерево так же, как он делает для извлечения коммита, но вы можете напрямую указать хеш-идентификатор дерева. У человека почти никогда нет причин делать это, но может потребоваться некоторое программное обеспечение. См. также документацию git rev-parse
.)
Обратите внимание, однако, что git checkout -- <em>path</em>
копирует из вашего индекса в ваше рабочее дерево (без предварительного извлечения из tree-ish
в индекс). Это может привести к неверному предположению, что они сделали.
Там - это способ извлечения файла непосредственно из коммита в ваше рабочее дерево, без предварительного просмотра индекса, используя git show
или git cat-file -p
. В старых версиях Git этот процесс всегда пропускает любые элементы конца строки и другие элементы фильтра и преобразования текста, что git checkout
делает для вас обычно; в более новых Gits вы можете заставить эти преобразования происходить так же, как и с git checkout
. Это предупреждение имеет значение только в том случае, если вы используете нечеткие фильтры , ident
или CRLF и опции преобразования конца строки.