当前位置: 首页 > 知识库问答 >
问题:

用JGit从Git存储库中检查特定的修订

乌俊健
2023-03-14

我正在尝试使用jGit克隆存储库并签出特定的提交。

假设提交哈希为:1e9ae842ca94f326215358917c620ac407323c81。

我的第一步是:

// Cloning the repository
    Git.cloneRepository()
        .setURI(remotePath)
        .setDirectory(localPath)
        .call();

然后我发现另一个问题建议这种方法:

git.checkout().
                setCreateBranch(true).
                setName("branchName").
                setUpstreamMode(CreateBranchCommand.SetupUpstreamMode.TRACK).
                setStartPoint("origin/" + branchName).
                call();

但我不知道如何将两者联系起来?

有什么想法吗?

共有1个答案

长孙景焕
2023-03-14

您必须首先克隆存储库,因此您的第一步是正确的:

Git.cloneRepository().setURI(remotePath).setDirectory(localPath).call();

要仅通过其id签出提交,可以调用<code>checkout</code>如下所示:

git.checkout().setName("<id-to-commit>").call();

但是请注意,这将导致分离的HEAD。为了避免这种情况,您可以告诉check out首先创建一个指向提交的新分支,然后签出该分支。

git.checkout().setCreateBranch(true).setName("new-branch").setStartPoint("<id-to-commit>").call();

API不是很直观,但它做了它应该做的。

 类似资料:
  • 问题内容: 我正在尝试使用jGit克隆存储库并签出特定的提交。 假设提交哈希为:1e9ae842ca94f326215358917c620ac407323c81。 我的第一步是: 然后,我发现了另一个提出这种方法的问题: 但是我不确定如何将两者链接在一起? 有什么想法吗? 问题答案: 您将必须首先克隆存储库,因此第一步是正确的: 要仅通过ID检出提交,可以这样调用: 但是请注意,这将导致HEAD分

  • 我目前集成了maven、jenkins、Nexus和git,我正在学习这些工具。 我的要求是告诉maven只从pom中提到的存储库下载依赖项。xml,而不是来自我的Nexus存储库,但它的作用恰恰相反。 我已经在my settings.xml的repository下声明了我的Nexus版本和快照存储库。我如何告诉maven从特定的存储库而不是Nexus repo下载依赖项。 下面是我的pom。xm

  • 我正在使用JGit访问远程Git回购,我需要为此使用SSH。JGit使用JSch提供安全访问。但是,我不确定如何设置JGit的密钥文件和知道主机文件。我所尝试的如下。 创建SshSessionFactory的自定义配置,通过子类化JSchConfigSessionFactory使用: 在我访问远程Git回购的类中,执行了以下操作: 我不知道如何将这个JSch对象与JGit关联,以便它能够成功地连接

  • 问题内容: 我想使用JGit获取存储库中的最后提交元数据(按日​​期最小的提交)。 我知道我可以使用以下方式获取提交元数据 但是如何获取最新的提交哈希? 还有其他方法可以直接在存储库中按日期获取最小数据吗? 问题答案: 按所有分支中的最后提交日期进行比较。 可以更改为仅比较远程分支。或者… 可以省略流利的setter 以便从本地存储库读取。

  • 问题内容: 我正在使用JGit访问远程Git存储库,并且需要使用SSH。JGit使用JSch提供安全访问。但是,我不确定如何为JGit设置密钥文件和已知主机文件。我尝试过如下。 通过子类化JSchConfigSessionFactory创建了SshSessionFactory的自定义配置: 在我访问远程Git存储库的课程中,执行了以下操作: 我不知道如何将此JSch对象与JGit关联,以便它可以成

  • 主要内容:创建一个远程存储库在本章中,我们将看到如何创建一个远程Git仓库; 我们需要一个远程Git仓库来执行团队协作。这一篇文章很重要,直接影响到后面的章节的学习。所以,希望大家可先耐心地看完本章内容,并按本章一步步的操作。 创建一个远程存储库 我们将演示在 http://git.oschina.net/ 软件项目的托管平台上创建和初始化一个新的存储库。 注:你也可以使用 GitHub (http://github.com