1. ホーム
  2. node.js

Nodeで直近のgitコミットのハッシュを取得する

2023-08-02 01:01:01

質問

NodeJSで現在のブランチの最新コミットのid/hashを取得したいのですが、どうすればよいですか?

NodeJSで、gitとそのコミットに関して、最新のid/hashを取得したいのですが。

どのように解決するのですか?

解決方法その1(gitが必要、コールバックあり)。

require('child_process').exec('git rev-parse HEAD', function(err, stdout) {
    console.log('Last commit hash on this branch is:', stdout);
});

オプションで execSync() を使って、コールバックを回避することもできます。

解決策その2(gitは不要)。

  • ファイルの中身を取得する .git/HEAD
  • git repo が detached head の状態であれば、その内容はハッシュとなります。
  • git リポジトリがどこかのブランチにある場合、コンテンツは次のようになります: "refs: refs/heads/current-branch-name"
  • の内容を取得します。 .git/refs/heads/current-branch-name
  • この処理で起こりうる全てのエラーを処理する
  • で、master ブランチから直接最新のハッシュを取得する場合は、ファイルの中身を取得します。 .git/refs/heads/master

というようなコーディングが可能です。

const rev = fs.readFileSync('.git/HEAD').toString().trim();
if (rev.indexOf(':') === -1) {
    return rev;
} else {
    return fs.readFileSync('.git/' + rev.substring(5)).toString().trim();
}