1. ホーム
  2. git

なぜ git は私のブランチ名のプレフィックスを大文字にするのですか?

2023-11-17 06:55:13

質問

私は本当に単純なgitコマンドのセットを持っていますが、それはいくつかの奇妙な動作に起因しています。

現在のローカルブランチを表示し、私が release/beta1 :

$ git branch
  develop
  master
* release/beta1

を作成します。 bugfix/somefeature から分岐して release/beta1 :

$ git checkout -b bugfix/somefeature
Switched to a new branch 'bugfix/somefeature'

ここまではいい感じでしょう?では、もう一度ローカルブランチを表示させてください。

$ git branch
  BUGFIX/somefeature

質問の内容

  • なぜ bugfix というプレフィックスが大文字になったのはなぜですか? BUGFIX ?
  • 関連:なぜ現在のブランチにアスタリスクが付いてないのですか?

私は OS X 10.8.2 上の Homebrew 経由で git バージョン 1.8.1.5 を使っていますが、これは私のかなり無味乾燥な ~/.gitconfig の有無にかかわらず発生します。この現象は、一見するとすべての bugfix/... ブランチで起こります。

どのように解決するのですか?

ブランチは ファイル の中に .git ディレクトリ内にあるファイルです。シングルブランチは、ブランチが指し示すコミットオブジェクトへのハッシュを含む単一のファイルです。

ですから、おそらく推測できるように、ブランチを作成するときに foo/bar を作成するとき、これはファイルを含むディレクトリに対応します。そのため、Git はフォルダーを作成します。 foo とファイル bar というファイルがあり、それがコミットを指しています。

これは、別のブランチを追加したときに foo/baz というファイルが作成されます。 baz を作成し、それをフォルダに追加します。

これで、大文字と小文字を区別しないファイルシステムでは、ブランチ名は大文字と小文字を区別するようになりました。つまり、次のようになります。 FOO/barfoo/bar は同じです。しかし、実際の 内部 の名前は、元のフォルダとファイル名から取られます。そのため bugfix ブランチカテゴリのフォルダが大文字で書かれている場合、ブランチは大文字の BUGFIX .

これを修正するには、単に .git/refs/heads に移動して、フォルダ名を好きなように変更してください。