75

私は非常に単純な 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/...ブランチで発生します。

4

3 に答える 3

126

ブランチはディレクトリ内にファイルとして保存されます。.git単一のブランチは、ブランチが指すコミット オブジェクトへのハッシュを含む単一のファイルです。

したがって、ご想像のとおり、ブランチを作成するとき、foo/barこれはファイルを含むディレクトリに対応します。そのため、Git はコミットを指すfooファイルを含むフォルダーを作成します。bar

つまり、別のブランチを追加するfoo/bazと、ファイルが作成され、それがbazフォルダーに追加されます。

大文字と小文字を区別しないファイル システムでは、ブランチ名の大文字と小文字が区別されなくなりました。これは、FOO/barfoo/barが同じであることを意味します。ただし、実際の内部名は元のフォルダーとファイル名から取得されます。したがって、bugfixブランチ カテゴリのフォルダが大文字で記述されている場合、ブランチは大文字で認識されBUGFIXます。

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

于 2013-03-12T21:08:28.667 に答える