[解決済み】現在チェックアウトされているGitブランチをプログラムで決定する方法【重複あり
2022-03-29 13:22:27
質問
Unix や GNU スクリプト環境(Linux ディストロ、Cygwin、OSX など)で、ある作業ディレクトリで現在チェックアウトされている Git ブランチを判断する最善の方法は何でしょうか。
このテクニックの用途の1つは、リリースに自動的にラベルを付けることです(例えば
svnversion
は、Subversionで行うことができます)。
関連する私の質問もご覧ください。 Git のチェックアウトがタグであるかどうか、またタグである場合にはその名前は何なのかをプログラムで判断するには?
どのように解決するのですか?
を覗いてみるのが正解です。
contrib/completions/git-completion.bash。
でのbashプロンプトに対して行うものです。
__git_ps1
. デタッチドHEADの状況、つまりunnamedブランチにいるときの記述方法を選択するなど、余分なものはすべて削除しています。
branch_name="$(git symbolic-ref HEAD 2>/dev/null)" ||
branch_name="(unnamed branch)" # detached HEAD
branch_name=${branch_name##refs/heads/}
git symbolic-ref は、シンボリック参照から完全修飾されたブランチ名を抽出するために使用します。これは、現在チェックアウトされているブランチである 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 maintainer) のブログ記事。 プログラムによる現在のブランチのチェック 2013年6月10日の記事で説明されています。 なぜ (そして、どのように)詳しく説明します。
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] Git で現在のブランチ名を取得するには?
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Git, fatal: リモートエンドが予期せずハングアップしました。
-
git commits with an error: 更新が拒否されました。現在のブランチの先端が、このブランチより後ろにあるためです。
-
gitコミット発生 ! [リモート拒否] master -> master (pre-receive hook declined) 解決策
-
[解決済み] 複数のgitコミットを元に戻すには?
-
[解決済み] Git - node_modules フォルダをどこでも無視するようにしました。
-
[解決済み] GitのFETCH_HEADとはどういう意味ですか?
-
[解決済み] Git で現在のブランチ名を取得するには?
-
[解決済み】Gitで現在のブランチだけを表示させる
-
[解決済み] Git で、同じコミットで現在のコミットハッシュをファイルに書き込むにはどうすればよいですか?
-
[解決済み] コミットメッセージにGitのブランチ名を追加するには?