Gitで現在のブランチ名を取得するにはどうすればよいですか?

2011年06月06日に質問されました。  ·  閲覧回数 1.8M回  ·  ソース

mike628 picture
2011年06月06日

私はSubversionのバックグラウンドを持っており、ブランチを持っていたとき、「これらの作業ファイルはこのブランチを指している」という作業をしていることを知っていました。

しかし、Gitでは、NetBeansまたはNotepad ++でファイルを編集しているときに、それがマスターに関連付けられているのか、別のブランチに関連付けられているのかがわかりません。

bashのgitに問題はありません、それは私が何をしているのかを教えてくれます。

回答

Jistanidiot picture
2012年08月27日
4713

現在のブランチを表示するには、他のブランチをリストせずに、次の操作を実行できます。

git rev-parse --abbrev-ref HEAD

参照:

roberttdev picture
2011年06月06日
2694
git branch

リポジトリのすべてのローカルブランチを表示する必要があります。 スター付きのブランチが現在のブランチです。

現在のブランチの名前のみを取得する場合は、次の操作を実行できます。

git rev-parse --abbrev-ref HEAD

またはGit2.22以降の場合:

git branch --show-current
Wernight picture
2012年08月08日
542

完全なrefspecを表示するgit symbolic-ref HEADあります。

Git v1.8以降でブランチ名のみを表示するには(指摘してくれたGregに感謝します):

git symbolic-ref --short HEAD

Git v1.7 +では、次のこともできます。

git rev-parse --abbrev-ref HEAD

ブランチを使用している場合は、両方で同じブランチ名を付ける必要があります。 あなたが離れた頭にいる場合、答えは異なります。

注意:

以前のクライアントでは、これは機能しているようです。

git symbolic-ref HEAD | sed -e "s/^refs\/heads\///"

ダリエン2014年3月26日

Stefaan picture
2013年10月25日
282

私自身の参照用に(ただし、他の人には役立つかもしれません)、このスレッドで言及されているほとんどの(基本的なコマンドライン)手法の概要を説明しました。それぞれがいくつかのユースケースに適用されます。HEADは(指し示す):

  • ローカルブランチ(マスター)
  • ローカルブランチと同期したリモートトラッキングブランチ(マスターと同じコミットでのオリジン/マスター)
  • ローカルブランチと同期していないリモートトラッキングブランチ(origin / feature-foo)
  • タグ(v1.2.3)
  • サブモジュール(サブモジュールディレクトリ内で実行)
  • 一般的なデタッチヘッド(上記のいずれでもない)

結果:

  • git branch | sed -n '/\* /s///p'
    • ローカルブランチ: master
    • リモートトラッキングブランチ(同期): (detached from origin/master)
    • リモート追跡ブランチ(同期されていません): (detached from origin/feature-foo)
    • タグ: (detached from v1.2.3)
    • サブモジュール: (HEAD detached at 285f294)
    • 一般的なデタッチヘッド: (detached from 285f294)
  • git status | head -1
    • ローカルブランチ: # On branch master
    • リモート追跡ブランチ(同期): # HEAD detached at origin/master
    • リモート追跡ブランチ(同期されていません): # HEAD detached at origin/feature-foo
    • タグ: # HEAD detached at v1.2.3
    • サブモジュール: # HEAD detached at 285f294
    • 一般的なデタッチヘッド: # HEAD detached at 285f294
  • git describe --all
    • ローカルブランチ: heads/master
    • リモートトラッキングブランチ(同期): heads/master (注: remotes/origin/masterはありません
    • リモート追跡ブランチ(同期されていません): remotes/origin/feature-foo
    • タグ: v1.2.3
    • サブモジュール: remotes/origin/HEAD
    • 一般的なデタッチヘッド: v1.0.6-5-g2393761
  • cat .git/HEAD
    • ローカルブランチ: ref: refs/heads/master
    • サブモジュール: cat: .git/HEAD: Not a directory
    • 他のすべてのユースケース:対応するコミットのSHA
  • git rev-parse --abbrev-ref HEAD
    • ローカルブランチ: master
    • 他のすべてのユースケース: HEAD
  • git symbolic-ref --short HEAD
    • ローカルブランチ: master
    • 他のすべてのユースケース: fatal: ref HEAD is not a symbolic ref

(参考までに、これはgitバージョン1.8.3.1で行われました)

Max picture
2019年06月08日
184

gitのバージョン2.22の時点では、次のものを使用できます。

git branch --show-current

manページによると:

現在のブランチの名前を出力します。 HEADを切り離した状態では、何も印刷されません。

Filip Spiridonov picture
2015年11月03日
137

もう1つの選択肢:

git name-rev --name-only HEAD
Olivier Refalo picture
2012年04月04日
93

簡単なことですが、ワンライナー(bash)で入手しました

git branch | sed -n '/\* /s///p'

(クレジット:限定的贖罪)

そして、私がそこにいる間、リモートトラッキングブランチを取得するための1つのライナー(もしあれば)

git rev-parse --symbolic-full-name --abbrev-ref @{u}
Tadeck picture
2011年06月06日
65

Linuxでは、リポジトリディレクトリにコマンドライン(コンソール)を入力するだけです。

$ git status

いくつかのテキストが表示されますが、その中には次のようなものがあります。

...
On branch master
...

つまり、現在masterブランチを使用しています。 その時点でファイルを編集していて、そのファイルが同じローカルリポジトリ(Gitバージョン管理下にあるファイルを含むローカルディレクトリ)にある場合は、このブランチでファイルを編集しています。

Kousha picture
2013年10月03日
38
git symbolic-ref -q --short HEAD

これは、現在のブランチ名が必要なスクリプトで使用します。 HEADへの現在の短いシンボリック参照が表示されます。これが現在のブランチ名になります。

ungalcrys picture
2016年06月14日
26
git branch | grep -e "^*" | cut -d' ' -f 2

ブランチ名のみが表示されます