Eu soube recentemente, a partir de um comentário de @richoh em uma postagem minha ( http://coderwall.com/p/-kh5bq?i=1&p=1&q=&t%5B%5D=%21%21mine&t%5B%5D= % 21% 21bookmarks ) sobre uma convenção para usar nomes de branch começando com ‘wip /’ para “trabalhos em andamento”, ou seja, branches onde não preciso ser terrivelmente cuidadoso para que meus commits quebrem a compilação ou introduzam regressões.
Logo tive problemas para criar nomes de branch com vários ‘/’ s neles, devido ao seguinte:
Digamos que eu primeiro crie um branch chamado ‘wip / foo’:
git branch wip/foo
O Git criará um arquivo chamado ‘foo’ na pasta .git/refs/head/wip/
. Agora, suponha que eu tente criar um novo branch chamado ‘wip / foo / foo-offshoot’. git retornará um erro:
error: unable to create directory for .git/refs/heads/wip/foo/foo-offshoot
fatal: Failed to lock ref for update: No such file or directory
A investigação desta resposta, http://stackoverflow.com/a/2527452/1286986 , me levou a entender que 'foo'
é um arquivo , enquanto o nome do branch até as barras anteriores será usado como uma pasta . Quando tento criar o segundo ramo, ele tenta criar agora '.git/refs/heads/wip/foo/'
como uma pasta , mas não pode, porque já existe como um arquivo ! Um comentário de Slipp D. Thompson sob esta resposta em stackoverflow, http://stackoverflow.com/a/6065944/1286986 , sugere algumas soluções alternativas interessantes, uma das quais é usar um sufixo padrão pré-decidido para nomear o arquivo de branch , como ‘principal’ em 'wip/foo/main'
e 'wip/foo/foo-offshoot/main'
.