如何重命名git工作树

12

假设我已经运行

$ git worktree add ~/worktrees/a
$ cd ~/worktrees/a
$ git status
On branch a

我希望改变工作树和分支的名称,将其从a更改为b

1个回答

20

实现这个目标的一个选项(我最终采取了这个方法)是:

$ git worktree move ~/worktrees/a ~/worktrees/b
$ cd ~/worktrees/b
$ git branch -m b

3
这基本上是正确的方法。请注意,工作树中没有每个人都会称之为“名称”的东西,而是有一个路径(其他人称之为路径名路径名称,因此称其为“名称”并不是不合理的,但至少我对您的意思感到困惑)。然而,它们确实有当前分支,或者处于分离的HEAD状态,当它们在分支上时,路径名称的最后一部分通常与分支名称匹配。因此,移动路径并重命名分支是达到您想要的目标的正确方式。 - torek
感谢你的评论@torek。学到了许多,这对于我开始使用工作树来理解它们似乎非常有用。但是为什么要这样区分呢?我猜想,除了将工作树存储在与“裸库”(我的教程称之)存储的相同根目录下之外,您还可以有一些“非标准”位置来存储每个工作树?尝试思考为什么这会是可取的。 - Greg Cobb
1
@GregCobb:一个“裸”仓库是不同的东西:它是一个没有工作树的仓库。拥有一个裸仓库的意义在于它没有工作树;给裸仓库添加工作树有点违背了这个目的。如果所有Git仓库最初都是裸的,那么在数学上(和逻辑上!)就有意义了,但Git的发展并非如此:一个“正常”的仓库总是有一个工作树。git worktree命令的出现是因为人们发现拥有多个工作树很有用。 - torek
1
@GregCobb: 这确实给我们留下了一种有点不必要的“默认”和“添加”的工作树之间的区别。现在Git必须做出这种区分,因为正常的克隆确实有一个默认的工作树,所以除非我们破坏与旧版Git版本的向后兼容性,否则我们将无法摆脱这种区别。 - torek
注意:有关工作树信息的路径可能仍位于.git/worktrees/a(!) - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接