はじめに
タイトルそのままだが、Gitのブランチを新規作成する際、小文字を指定しているのに大文字に変換されてしまう状況に遭遇した。この記事はその時の備忘録。
状況の詳細
というよりも再現方法。下記コマンドを実行する。
git branch HOGE/000
git branch hoge/001
git branch
> HOGE/000
> HOGE/001
git branch -D HOGE/000
git branch -D HOGE/001
git branch
>
git branch hoge/001
git branch
> HOGE/001
コマンドを実行したら「HOGE/000」「HOGE/001」という名前を持つブランチができてしまった。
職場のブランチ命名規則は原則小文字を使用する事になっており、1番目のコマンドは間違って実行したものである。
出来上がった2個のブランチを両方削除しても、どこかにキャッシュが残っているのか、再度小文字を指定してブランチを作成しても大文字のままとなってしまった。
ちなみに「hoge/」と指定しなければ小文字の名前を持つブランチを作成できた。Gitは便利だがたまに深みにはまってしまう事がある。勉強不足。
結論
下記手順を実行する事により、無事「hoge/001」ブランチを作成できるようになった。かなり力技を使ったので、あるべき作業手順ではないと思う。
ちなみに私は力技が嫌いだ。このブログを記述した理由はそのあるべき作業手順を誰かが教えてくれることを期待してというところもある。
いろいろやったので、余計なことまでやっている可能性があるが、全ての作業を記載しておく。
【手順】
- ./.git/logs/refs/heads/ 以下の「HOGE」フォルダを削除
- ./.git/refs/heads/ 以下の「HOGE」フォルダを削除
- .git/refs/remotes/origin/ 以下の「HOGE」フォルダを削除
- tmpという名前のブランチを作成する
- tmpブランチでcommitを行う
補足
3の時点で「git branch hoge/001」とコマンドを実行すると、
fatal: Not a valid object name:hoge/001
というエラーが発生し、commitができなくなってしまった。やはり力技はやるべきではない。
どうやら適当なブランチでcommitを実行するといいらしい(なにも理解していない。。。)のでそれを実行。
参考
さらに「hoge/001」ブランチで「git push」ができない(厳密にいうと、commitしているのに「Everything up-to-date」と表示されてしまう)状況になってしまった。これは代わりに「git push --set-upstream origin hoge/001」と実行することで可能となった。
The 力技
補足
OS Xの標準のファイルシステムは大文字小文字を区別しないらしいので、その影響もあるかもしれない。。。
#最後に
そんな弊社ですが、もし興味がありましたら、Qiitaの弊社技術者ブログトップページの下の方から連絡いただけましたら嬉しいです。お待ちしています!