javaでGitのコミット履歴を取得する方法

Javaは、JGitライブラリーを使用してGitのコミット履歴を取得することができます。JGitは、Gitバージョン管理システムにアクセスするためのJavaライブラリーです。

まず、プロジェクトでJGitライブラリの依存関係を導入する必要があります。依存関係を管理するために、mavenやgradleなどのビルドツールを使用できます。

Mavenの依存関係:

<dependency>
    <groupId>org.eclipse.jgit</groupId>
    <artifactId>org.eclipse.jgit</artifactId>
    <version>5.13.1.202109080827-r</version>
</dependency>

Gradleの依存関係

implementation 'org.eclipse.jgit:org.eclipse.jgit:5.13.1.202109080827-r'

Git コミット履歴は次のコードを使用して取得できます。

import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.revwalk.RevCommit;

import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Iterator;

public class GitCommitHistory {
    public static void main(String[] args) {
        // 设置本地仓库路径
        Path repositoryPath = Paths.get("/path/to/your/repository");

        try (Git git = Git.open(repositoryPath.toFile())) {
            Iterable<RevCommit> commits = git.log().all().call();
            Iterator<RevCommit> iterator = commits.iterator();

            while (iterator.hasNext()) {
                RevCommit commit = iterator.next();
                System.out.println(commit.getFullMessage());
                System.out.println(commit.getAuthorIdent().getName());
                System.out.println(commit.getAuthorIdent().getEmailAddress());
                System.out.println(commit.getAuthorIdent().getWhen());
                System.out.println("----------------------");
            }
        } catch (IOException | GitAPIException e) {
            e.printStackTrace();
        }
    }
}

「/path/to/your/repository」を自分のパソコン上のGitリポジトリへのパスに置き換えてください。

上記コードは、各コミットログの、完全なメッセージ、作者、メールアドレス、コミット日時を出力します。

IOExceptionやGitAPIExceptionといった投げられる可能性のある例外をコード内でキャッチする必要があります。

これはGitのコミット履歴を入手するための基本的な方法です。必要に応じて、JGitで提供されている他の方法を使用することで、より多くの関連情報を取得できます。

bannerAds