Unix または GNU スクリプト環境 (Linux ディストリビューション、Cygwin、OSX など) で、作業ディレクトリで現在チェックアウトされている Git ブランチを確認する最適な方法は何ですか?
このテクニックの 1 つの用途は、リリースに自動的にラベルを付けることです ( svnversion
Subversion で行うのと同様)。
関連する質問もご覧ください:Git チェックアウトがタグであるかどうかをプログラムで判断するにはどうすればよいですか? タグである場合、タグ名は何ですか?
ベストアンサー1
正しい解決策は、git 補完ファイルは、bash プロンプトでこれを実行します__git_ps1
。分離された HEAD 状況 (つまり、名前のないブランチにいる場合) の説明方法の選択などのすべての追加情報を削除すると、次のようになります。
branch_name="$(git symbolic-ref HEAD 2>/dev/null)" ||
branch_name="(unnamed branch)" # detached HEAD
branch_name=${branch_name##refs/heads/}
git シンボリック参照シンボリック参照から完全修飾ブランチ名を抽出するために使用されます。現在チェックアウトされているブランチである HEAD に使用します。
別の解決策としては、次のものが考えられます。
branch_name=$(git symbolic-ref -q HEAD)
branch_name=${branch_name##refs/heads/}
branch_name=${branch_name:-HEAD}
最後の行では、分離された HEAD の状況を扱い、そのような状況を示すために単に「HEAD」を使用します。
2013年11月6日追加
Junio C. Hamano (git メンテナー) のブログ投稿、プログラムで現在のブランチを確認する2013 年 6 月 10 日の では、その理由(および方法) がさらに詳しく説明されています。