什么是git worktree标识符

时间:2017-11-30 09:42:46

标签: git 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 个答案:

答案 0 :(得分:2)

此处打印的“标识符”只是内部名称的最后一部分(sb_repo.buf)。在正常情况下,它对普通用户没有实际意义,但它是.git/worktrees中包含指定工作树的管理文件的子目录的唯一名称。 如果手动重命名工作树(更改其路径),则必须更新其中一个管理文件。这在DETAILS section of the git worktree documentation

中有所描述

虽然在创建工作树时打印了此标识符,但如果您执行移动添加的工作树,则很可能在添加工作树后执行此操作,并且忘记了标识符,所以在我看来,消息本身现在没用了(也就是说,它在开发过程中可能对开发人员有用,但现在只是剩下的垃圾)。管理文件的路径直接位于添加的工作树中的.git文件中:

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

因为这是你需要知道的,你可以通过查看.git找到它。

请注意,Git版本2.6.0中的消息已从Enter %s (identifier %s)更改为Preparing %s (identifier %s),通过commit cd2f471311,因此这意味着您运行的是Git 2.5.x,它有一些小的添加了工作树的bug(不是很大的,但我建议转到后来的Git版本)。