🚀

.git フォルダの中のファイルを直接解析して HEAD の commit hash を取得する

2024/07/06に公開

.git フォルダの中のファイルを直接解析して HEAD の commit hash を取得する

import os

def get_head_commit_hash(git_dir='.git'):
    # .git/HEAD ファイルのパス
    head_path = os.path.join(git_dir, 'HEAD')
    
    # HEAD ファイルを読み取る
    with open(head_path, 'r') as f:
        ref = f.readline().strip()
    
    # HEAD が参照しているブランチのパスを取得
    if ref.startswith('ref:'):
        ref_path = os.path.join(git_dir, ref.split(' ')[1])
        
        # ブランチの参照ファイルを読み取る
        with open(ref_path, 'r') as f:
            commit_hash = f.readline().strip()
    else:
        # 直接コミットハッシュが書かれている場合
        commit_hash = ref
    
    return commit_hash

# 使用例
commit_hash = get_head_commit_hash()
print(f"{commit_hash}")

参考

上記コードは The AI Code Editor cursor で生成しました。

使用したプロンプト

.git フォルダの中のファイルを解析して HEAD の commit hash を取得する

Discussion