我要拉取新一个新分支;新分支名称包含已经存在的分支名称,并且新分支包含’/’,这时候分支会创建失败;比如新分支名称20230228/12;旧分支名称20230228;
这个问题困扰我很久了,希望各位大神给解惑一下。
根据实际的测试情况来看,当你新建分支名称的一部分,是已存在的分支名称时,是无法创建成功的。例如你上面的新分支20230228/12,它前面一部分是20230228这个分支的名称,因此创建就会报错。
当20230228分支不存在时,才可以正常创建成功。
同样的,当分支20230228/12这个分支名存在时,也无法创建20230228这个分支,也会报错。原因是分支名称存放在.git/refs/heads/
目录下,如果是带斜杠的分支,是一个多级目录。如果是正常分支,则只是一个文件。
例如:
ls -l .git/refs/heads/
total 16
-rw-r--r-- 1 fred staff 41 2 28 17:26 20230228
drwxr-xr-x 3 fred staff 96 2 28 17:53 20230229
-rw-r--r-- 1 fred staff 41 2 28 17:25 main
ls -l .git/refs/heads/20230229
total 8
-rw-r--r-- 1 fred staff 41 2 28 17:53 foo
而在Linux下,同一个目录下不能存在文件和目录名称一致的情况。