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();
}
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] まだプッシュされていない Git マージを元に戻す
-
[解決済み] Git でブランチからコミットを削除する
-
[解決済み] git rebase の取り消し
-
[解決済み] Git で現在のコミットのハッシュを取得する方法は?
-
[解決済み] Git を使って前のコミットから分岐させる
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み] 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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Node Version Manager のインストール - nvm コマンドが見つかりません。
-
[解決済み】エラーです。EACCES: 権限が拒否されました、アクセス '/usr/local/lib/node_modules' 。
-
[解決済み】 console.logの出力をどこに永久保存するか?
-
[解決済み】Passport.js - エラー: ユーザーのセッションへのシリアライズに失敗しました。
-
[解決済み】Mongooseで配列の値を更新する方法
-
[解決済み] MongoDB でコレクションを日付順に並べるには?
-
[解決済み] AWS s3 api error: specified bucket does not exist.
-
[解決済み] nodejs - http.requestでresponse.writeを使用する場合、第一引数は文字列またはBufferでなければなりません。
-
[解決済み] express は `body-parser deprecated undefined extended` としてエラーを投げます。
-
[解決済み] MongoNetworkError: 最初の接続でサーバー [localhost:27017] への接続に失敗 [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017] 。