1. 概要

Git は、業界で人気があり、広く使用されているバージョン管理システムになりました。 通常、Gitリポジトリを操作するときは、ブランチを操作します。

このチュートリアルでは、現在作業中のブランチ名を取得する方法について説明します。

2. 問題の紹介

まず、myRepoというGitリポジトリを準備しましょう。

$ git branch -a
* feature
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

git branch コマンドの出力が示すように、 myRepo には2つのローカルブランチがあり、現在チェックアウトされているブランチはfeatureブランチです。 「feature」の前にある「*」文字です。

場合によっては、ブランチリスト全体を使用せずに現在のブランチ名のみを取得したい場合があります。 たとえば、リポジトリに多くのローカルブランチがある場合、長いブランチリストを取得する可能性があります。 または、一部のプロセスを自動化するスクリプトを作成する場合、ブランチ名を取得して他のコマンドに渡すだけです。

次に、現在のブランチ「feature」をすばやく取得する方法を見てみましょう。

3. gitsymbolic-refコマンドの使用

現在のブランチ情報は、Gitのバージョンに応じて、 .git /HEADファイルによって保存またはリンクされます。 たとえば、このマシンでは、 .git /HEADファイルは次のファイルを保持します。

$ cat .git/HEAD
ref: refs/heads/feature

したがって、シンボリックrefを指します。  git symbolic-refコマンドを使用すると、シンボリックrefsを読み取って変更できます。 このコマンドを使用して、現在の短いブランチ名を取得できます。

$ git symbolic-ref --short HEAD
feature

4. gitrev-parseコマンドの使用

Gitバージョン1.7以降、代わりにgit rev-parseコマンドを使用して、現在のブランチ名を取得できます

$ git rev-parse --abbrev-ref HEAD
feature

5. gitname-revコマンドの使用

Gitのgitname-rev コマンドは、指定されたrevのシンボリック名を見つけることができます。 したがって、現在のブランチ名を取得するには、rev HEADの名前を読み取ることができます。

$ git name-rev --name-only HEAD
feature

上記の出力が示すように、 gitname-revコマンドは現在のブランチ名も出力します。 出力からの回転情報(HEAD)を抑制するために、コマンドに–name-onlyオプションを追加したことに注意してください。

6. gitbranchコマンドの使用

オプションなしでgitbranch コマンドを起動すると、Gitはすべてのローカルブランチを出力し、名前の前に「*」文字を付けて現在のブランチを最初の行に配置します。

$ git branch
* feature
  master

したがって、 git branch コマンドの出力を解析して、ブランチ名を取得できます。 gitbranchsedコマンドを組み合わせた例を見てみましょう。

$ git branch | sed -n '1{s/^* *//;p}'
feature

実際、バージョン2.22以降、Gitはgit branchコマンドに–show-currentオプションを導入して、現在のブランチ名を簡単に取得できるようにしています。

$ git branch --show-current
feature

明らかに、このコマンドは gitbranchコマンドの出力を解析するよりも優れています。

7. 結論

この簡単な記事では、Gitリポジトリで現在のブランチ名を取得するいくつかの方法について説明しました。