我创建了一个裸 git 存储库,如下所示
cd E:\repos
git init --bare foo.git
cd foo.git
git remote add origin <repository-url>/foo
然后我添加了一个
master
工作树并将其链接到远程 master
分支
git worktree add master
cd master
git fetch origin master
git branch --track master origin/master
dev/joseville/rem
是远程仓库中存在的一个分支,我尝试为其创建一个工作树
git worktree add dev/joseville/rem
但出现以下错误
Preparing worktree (new branch 'rem')
error: unable to create file <path-to-file>: Filename too long
... (40 of this same error in total)
error: unable to create file <path-to-file>: Filename too long
Updating files: 100% (82960/82960), done.
fatal: Could not reset index file to revision 'HEAD'.
我尝试
cd
进入其中
cd dev
cd joseville
cd rem
但是
rem
不存在——出现此错误(在 PowerShell 中)
Set-Location: Cannot find path 'E:\repos\foo.git\dev\joseville\rem' because it does not exist.
相比之下,
dev/joseville/nonrem
是远程仓库中不存在的分支,我能够为其创建一个工作树
cd E:\repos\foo.git
git worktree add dev/joseville/nonrem
并得到以下输出
Preparing worktree (new branch 'nonrem')
Updating files: 100% (82960/82960), done.
HEAD is now at 0652479dc11 <commit-msg>
能够
cd
进入其中
cd dev
cd joseville
cd nonrem
ls E:\repos\foo.git\refs\heads
显示
master
nonrem
rem
当我期待的时候
dev/joseville/nonrem
dev/joseville/rem
master
ls E:\repos\foo.git\worktrees
显示
master
nonrem
当我期待的时候
dev/joseville/nonrem
dev/joseville/rem
master
PS E:\repos\foo.git> git branch
显示
* master
+ nonrem
rem
当我期待的时候
dev/joseville/nonrem
dev/joseville/rem
* master
ls E:\repos\foo.git
表明它包含dev
和master
。它不包含 rem
也不包含 nonrem
。
你修好了吗?我也遇到同样的问题=(