如何使用jGit限制每个文件版本的提交数量

如何使用jGit限制每个文件版本的提交数量,git,jgit,Git,Jgit,我们使用jgit来存储一些内部文件的版本,我希望每个文件只允许有限数量的版本。目前,我可以使用以下方法为每个文件添加无限数量的提交: git.add() .addFilepattern(fileName + ".yaml") .call(); git.commit() .setMessage(comment) .setAuthor((String)context.get("userName")

我们使用
jgit
来存储一些内部文件的版本,我希望每个文件只允许有限数量的版本。目前,我可以使用以下方法为每个文件添加无限数量的提交:

git.add()
        .addFilepattern(fileName + ".yaml")
        .call();
git.commit()
        .setMessage(comment)
        .setAuthor((String)context.get("userName"),(String)context.get("userName")+"@xxx.ch")
        .call();
我想检查每个文件的git版本数是否大于n,在这种情况下,
squash
n-version和
n+1版本
,或者只删除
n+1版本
。如果回购协议中特定文件的版本数大于n并挤压两个版本或删除
n+1版本
,我如何签入jGit?有没有更好的办法

更新:

假设我允许git repo中的每个文件有5个版本,并且在
git reflog
中有以下条目:

A---B---C---D---E---F---G---H---I

特定文件具有以下
git日志
entires:

B---C---E---F---G---H

我可以设想两种选择: 一个选项:“挤压”将G和H提交到Z。 第二个选项:“删除”提交H

我只在本地机器上的一个分支(主分支)工作。
我查看了问题的答案,但我仍然不确定如何使用“jGit”完成此操作。

我们决定不重写repo中文件的历史记录。

这不是Git版本控制可以立即完成的事情,每次提交都基于所有以前的提交,每次对文件的更改都基于所有以前的更改,因此,您需要一直使用一些类似于rebase的方法来重写History,这可能相当复杂……谢谢@centic,我可以用jGit对同一分支中的一个或多个提交进行rebase吗?请看我上面的升级问题。