Is this on Windows? Or maybe you're on an older version of Git? I make branches with slashes in the name all the time, never had a problem with it.
% git init
Initialized empty Git repository in /private/tmp/gittest/.git/
% git commit --allow-empty -m "initial"
[main (root-commit) fa2cf4e] initial
% git checkout -b test
Switched to a new branch 'test'
% git checkout -b test/1
fatal: cannot lock ref 'refs/heads/test/1': 'refs/heads/test' exists; cannot create 'refs/heads/test/1'
% git --version
git version 2.39.3 (Apple Git-145)
% git checkout -b foo/bar
Switched to a new branch 'foo/bar'
% git checkout -b foo/qux
Switched to a new branch 'foo/qux'
% git checkout -b foo
fatal: cannot lock ref 'refs/heads/foo': 'refs/heads/foo/bar' exists; cannot create 'refs/heads/foo'
The issue is that 'test' exists before 'test/1' was (attempted to be) created. % pwd
/tmp/gittest/.git/refs/heads
% find . -print
.
./test
./foo
./foo/qux
./foo/bar
./main
% file *
foo: directory
main: ASCII text
test: ASCII text
In refs/heads, 'test' is a file and thus git is unable to create 'test/1'.You get even _more_ interesting problems if part of your team has case-insensitive file-systems!