如何在现有存储库上使用 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
是我的本地存储库目录。
您需要提供远程仓库名称和远程分支名称。例如 origin
和 master
:
PullResult result = git.pull()
.setCredentialsProvider(user)
.setRemote("origin")
.setRemoteBranchName("master")
.call();
if (result.isSuccessful()) {
...
} else {
...
}
另请注意,拉取命令返回的结果为PullRequest
——其方法isSuccessful()
表示是否拉取成功。您可能也想在代码中添加此逻辑。
参考文献:
我需要一段代码,可以 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
是我的本地存储库目录。
您需要提供远程仓库名称和远程分支名称。例如 origin
和 master
:
PullResult result = git.pull()
.setCredentialsProvider(user)
.setRemote("origin")
.setRemoteBranchName("master")
.call();
if (result.isSuccessful()) {
...
} else {
...
}
另请注意,拉取命令返回的结果为PullRequest
——其方法isSuccessful()
表示是否拉取成功。您可能也想在代码中添加此逻辑。
参考文献: