如何在现有存储库上使用 JGit 从源中提取

How to pull from origin using JGit on existing repository

我需要一段代码,可以 pull 来自 origin 和 merge 与本地 repo。我尝试使用本地回购,它可以获得最后一次提交和修订。但是无法 pull 来自原点的更改。

File gitWorkDir = new File(gitDir);
Git git = Git.open(gitWorkDir);
Repository repo = git.getRepository();
UsernamePasswordCredentialsProvider user = new 
UsernamePasswordCredentialsProvider("username", "password");
PullCommand pullCmd = git.pull();
pullCmd.setCredentialsProvider(user);
pullCmd.call();
ObjectId lastCommitId = repo.resolve(Constants.HEAD);
log.info(lastCommitId);

其中 gitDir 是我的本地存储库目录。

您需要提供远程仓库名称和远程分支名称。例如 originmaster:

PullResult result = git.pull()
    .setCredentialsProvider(user)
    .setRemote("origin")
    .setRemoteBranchName("master")
    .call();

if (result.isSuccessful()) {
  ...
} else {
  ...
}

另请注意,拉取命令返回的结果为PullRequest——其方法isSuccessful()表示是否拉取成功。您可能也想在代码中添加此逻辑。

参考文献: