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

如何在JGit中使用Repository::resolve(String)

韶硕
2023-03-14

我正在使用JGit的Class Repository用java编写我的程序。

此类具有方法解析(String recstr)。

基本上,这个方法解析git修订字符串并返回一个对象id。支持这些运算符的特定组合:< br >

SHA-1:完整或简略的SHA-1参考文献/...:完整的引用名称< br >短名称:refs/heads、refs/tags或refs/remotes命名空间下的短引用名称< br > tag-NN-gABBREV:describe的输出,通过将ABBREV视为缩写的SHA-1来解析。< br> id^:提交id的第一个父代,这与id^1
id^0:确保id是提交的相同< br> id^n:提交id的第n个父代< br > id ~ n:id的第n个历史祖先,由第一个父代确定。id~3相当于id^1^1^1或id^^^.< br> id:path:按id命名的树下的查找路径< br> id^{commit}:确保id是提交的< br> id^{tree}:确保id是树< br> id^{tag}:确保id是标记< br> id^{blob}:确保id是blob

我想用这种方法

Repository repo;
ObjectId commit = repo.resolve("cnfuwfxmiazsdixfnsdiufsdhfiusfhsfisfh^{tree}");
System.out.println(commit );

预期输出:

cnfuwfxmiazsdixfnsdiufsdhfiusfhsfisfh

输出:

sjakfshdofcsmdfocsdfjdofdjgdhgfdgfhgf
//Output is another commit in project.

我想要我已经插入的提交,但是它显示了另一个提交。我想是因为它是提交id的第一个父级。

有没有办法获得我放入方法< code>resolve()中的相同提交id?

共有1个答案

况景龙
2023-03-14

您传递给解析()的表达式要求cnf...的树ID(顺便说一句,Git对象ID仅由十六进制字符组成)。这很可能是您得到的,您指定的提交的树ID。

为了将字符串转换成JGit ObjectId,请使用

ObjectId objectId = ObjectId.fromString( "..." );

请参见:如何使用JGit从SHA1 ID字符串中获取RevCommit或ObjectId?

 类似资料:
  • 问题内容: 如何在JGit中合并? 假设我要与分支合并,该怎么做? 问题答案: 要合并,您可以在之后使用(在org.eclipse.jgit.api包中)。为了给您提供示例,因为Jgit确实缺少示例: 我没有尝试该代码,因此它可能并不完美,但这只是一个开始。而且我没有包括进口。使用JGit开发意味着基于Javadoc的许多尝试

  • 我想使用jGit找到特定行的提交历史。这可以在CLI中使用git log -L来完成,如何在jGit中做到这一点?

  • 问题内容: 不久前,我正在寻找Java中的可嵌入的分布式版本控制系统,我想我已经在JGit中找到了它,它是git的纯Java实现。但是,示例代码或教程的方式并不多。 如何使用JGit检索某个文件的HEAD版本(就像或应该做)? 我想这涉及一些rev-tree-walking,并且正在寻找代码示例。 问题答案: 不幸的是,Thilo的答案不适用于最新的JGit API。这是我找到的解决方案: 我希望

  • 如何使用JGit获取源远程的URL? 我正在使用JGit,我想执行 那要怎么做?

  • 我使用 JGit 将本地磁盘上的存储库克隆为裸露。现在,我需要在任何给定的提交ID(SHA1)下读取文件的内容。我该怎么做?

  • 我是git的新用户,正在使用JGit与远程git存储库进行交互。在JGit中,我最初使用<code>CloneCommand</code>来克隆回购,并且它没有问题。但是,当我尝试使用<code>PullCommand 这是我使用的代码: 这不会为我已使用命令行推送到远程存储库的新文件更新本地存储库。但是,如果我删除本地存储库并再次克隆,则会反映所有更改。 请让我知道在JGit中使用的正确方法是什