2023年11月29日发(作者:)

JGit⼊门

如果您想知道如何在JGit中执⾏诸如git initgit checkout等基本的Git命令,请继续阅读。

本教程概述了JGit中最常⽤的git命令及其对应的命令。 它逐步执⾏以下步骤:创建存储库,从远程获取内容,向历史记录添加⽂件或从历

史记录中删除⽂件,检查历史记录,最后将更改推回原始存储库。

JGit提供了⼀个类似于Git⾼级命令的API。 代替

git commit -m "My first commit"

在命令⾏上,您将编写

().setMessage( "My first commit" ).call();

在JGit中。

所有都有⼀个call()⽅法,在设置该命令后,该⽅法将⽤于实际执⾏它。 这些类以各⾃的Git命令后缀Command命名。 尽管某些命令提

供了公共构造函数,但建议使⽤Git⼯⼚类来创建命令实例,如上例所⽰。

获取图书馆

填充存储库

现在我们有了⼀个存储库,我们可以开始填充其历史记录。 但是,为了提交⽂件,我们⾸先需要将其添加到所谓的索引(也称为暂存区)

中。 commit命令将仅考虑在索引中添加(或从索引中删除)的⽂件。

使⽤addPath(),可以将StatusCommand配置为仅显⽰某些⽂件的状态。 给定的路径必须命名⽂件或⽬录。 不存在的路径将被忽略,

并且不⽀持正则表达式或通配符。

Status status = ().addPath( "documentation" ).call();

在上⾯的⽰例中,将递归计算“⽂档”⽬录下所有⽂件的状态。

浏览存储库

现在,该存储库具有(⼩的)历史记录,我们将研究该命令以列出现有提交。

JGit的git log副本的最简单形式允许列出从当前HEAD可以访问的所有提交。

Iterable iterable = ().call();

返回的迭代器可⽤于循环遍历LogCommand找到的所有提交。

该命令返回⼀个可迭代的PushResults。 在上述情况下,迭代器仅包含⼀个元素。 为了验证推送是否成功,可以要求pushResult返回给

定分⽀的RemoteRefUpdate。

RemoteRefUpdate详细描述了更新内容以及更新⽅式。 但是它也有⼀个状态属性,⽤于总结结果。 并且如果状态返回OK,我们可以放⼼

操作成功。

即使该命令在没有给出任何建议的情况下也可以运⾏,但是它具有许多选项,在下⾯仅列出了更常⽤的选项。 默认情况下,该命令将推送

到名为“ origin”的默认遥控器。 使⽤setRemote()可以指定其他远程存储库的URL或名称。 如果其他分⽀⽐当前应该推可以与