我需要使用JGit获取与特定提交关联的分支的名称。我使用JGit获取存储库的提交SHA的完整列表,现在我需要知道它所属的分支的名称。
如果有人能让我知道我如何做到这一点,我将不胜感激。
正如文件所说,
类列表分支命令
ListBranchCommand setContains(字符串containsCommissh)
setContains
public ListBranchCommand setContains(String containsCommitish)
If this is set, only the branches that contain the specified commit-ish as an ancestor are returned.
Parameters:
containsCommitish - a commit ID or ref name
Returns:
this instance
Since:
3.4
这个 api 对应于 git 分支 --contain
如果您想列出远程分支(< code>-r
)或远程和本地分支(< code>-a),您可能还需要这个api,
setListMode
public ListBranchCommand setListMode(ListBranchCommand.ListMode listMode)
Parameters:
listMode - optional: corresponds to the -r/-a options; by default, only local branches will be listed
Returns:
this instance
样本:
#list all the branches that "HEAD" belongs to.
try {
Git git = Git.open(new File("D:/foo/.git"));
List<Ref> refs = git.branchList().setContains("HEAD").setListMode(ListBranchCommand.ListMode.ALL).call();
System.out.println(refs);
} catch (Exception e) {
System.out.println(e);
}
在Git中,提交不属于分支。提交是不可变的,而分支可以更改它们的名称以及它们指向的提交。
如果存在直接指向提交或提交后续分支的分支,则可以从分支(或标记或其他 ref)访问提交。
在 JGit 中,NameRevCommand
可用于查找直接指向提交的分支(如果有)。例如:
Map<ObjectId, String> map = git
.nameRev()
.addPrefix("refs/heads")
.add(ObjectId.fromString("<SHA-1>"))
.call();
上面的代码片段在<code>refs/heads<code>命名空间中查找指向给定提交的引用。返回的映射最多包含一个条目,其中键是给定的提交id,值表示指向它的分支。
问题内容: 我试图显示文件的两次提交之间的git diff。基本上,我是按照https://github.com/centic9/jgit- cookbook/blob/master/src/main/java/org/dstadler/jgit/porcelain/ShowChangedFilesBetweenCommits.java中的说明进行操作的 您可以在https://github.co
问题内容: 我一直在研究将要集成Git功能的基于Java的产品。使用Git的功能之一,我通过分阶段执行将10多个文件添加到Git存储库中,然后在一次提交中提交了这些文件。 以上过程可能相反吗?即查找作为提交的一部分提交的文件列表。 我在命令的帮助下获得了提交,但是我不确定如何获取提交的文件列表。 示例代码: 问题答案: 每个提交都指向一 棵树 ,该 树 表示构成该提交的所有文件。注意,这不仅包括使
我一直在开发一个基于Java的产品,Git特性将被集成到该产品中。通过使用Git的一个特性,我将10个文件添加到Git存储库中,然后在一次提交中提交。 上述过程是否可能相反?即查找作为提交的一部分提交的文件列表。 我在< code>git.log()命令的帮助下获得了提交,但是我不确定如何获得提交的文件列表。 示例代码:
问题内容: 在连接到仓库以及添加,提交甚至循环提交文件的消息方面,我已经设法掌握了jGit文件的基础知识。 我接下来要做的是能够获取单个文件的所有提交消息,然后能够将单个文件还原回特定的参考/时间点。 问题答案: 这是基于所有父提交查找提交更改的方法 (标量代码) 请注意,TreeFilter.ANY_DIFF适用于单个树遍历器,并将返回根提交中可用的所有元素。 然后,您将不得不遍历树以查看您的文
我需要将提交的内容存储在字符串中,这将是从例如master到最新提交的差异。 如何使用JGit显示提交之间的更改底部答案与我想要的非常相似 这是链接中的代码 格式()方法是无效的,似乎没有办法返回字符串或某种输出流。 我希望会有一些类似于 我知道这在库中不存在,但是必须有一些东西可以将提交的内容放入可以转换为字符串的内容中。
如何使用jgit遍历来自特定分支的特定提交的所有内容? 这段代码从提交中检索一个特殊文件,但我希望遍历提交的所有内容。