Что такое git worktree-идентификатор

При создании нового рабочего дерева git отображается сообщение, подобное приведенному ниже.

$ git worktree add -b hotfix ../hotfix origin/master
Enter ../hotfix (identifier hotfix)
Branch hotfix set up to track remote branch master from origin.
Switched to a new branch 'hotfix'
$ cd ../hotfix

Здесь какой смысл использовать идентификатор? Я заметил, что если я создаю другое рабочее дерево по другому пути, но такое же имя папки, как ../abc/hotfix, он назначит идентификатор как hotfix2, Есть ли какое-либо использование этого идентификатора для пользователя, например, использование идентификатора для перемещения к конкретному рабочему дереву или его конкретного удаления?

1 ответ

Решение

"Идентификатор", напечатанный здесь, является только последней частью внутреннего имени (sb_repo.buf). Это не имеет никакого значения для обычных пользователей в обычных случаях, но это уникальное имя подкаталога в .git/worktrees содержащий административные файлы для указанного рабочего дерева. Если вы вручную переименуете рабочее дерево (изменив его путь), вы должны обновить один из этих административных файлов. Это описано в разделе ДЕТАЛИ git worktree документация

Хотя этот идентификатор печатается во время создания рабочего дерева, наиболее вероятно, что если вы переместите добавленное рабочее дерево, вы сделаете это спустя долгое время после его добавления и забудете идентификатор, поэтому, на мой взгляд, само сообщение теперь бесполезно (т. е. оно, вероятно, было полезно для разработчика во время разработки, но теперь является просто ненужным мусором). Путь к административным файлам находится непосредственно в .git файл в добавленном рабочем дереве:

$ cat .git
gitdir: [...]/git/.git/worktrees/hotfix

и так как это то, что вам нужно знать, вы найдете это, посмотрев на .git,

Обратите внимание, что сообщение было изменено с Enter %s (identifier %s) в Preparing %s (identifier %s) в Git версии 2.6.0, через commit cd2f471311, так что это означает, что вы работаете с Git 2.5.x, в которой есть небольшие ошибки с добавленными рабочими деревьями (не огромные, но я бы порекомендовал перейти на более позднюю версию Git).

Другие вопросы по тегам