【发布时间】:2021-03-26 18:49:43
【问题描述】:
我们使用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 version 或者只是删除 n+1 version。如果 repo 中特定文件的版本数大于 n 并压缩两个版本或删除 n+1 version,我如何检查 jGit?有没有更好的方法来做到这一点?
更新:
假设我允许 git repo 中的每个文件有 5 个版本,我在 git reflog 中有以下条目:
A-----B------C------D------E------F------G-- -H--------我
具体的文件有以下git log全文:
B-----C------E------F------G------H
我可以设想两种选择: 一种选择:“壁球”将 G 和 H 提交给 Z。 第二个选项:“删除”提交 H
我只在本地机器上的一个分支(主)中工作。 我查看了this 问题的答案,但我仍然不确定如何使用`jGit 来做到这一点。
【问题讨论】:
-
这不是 Git 版本控制可以开箱即用的东西,每次提交都基于所有先前的提交,对文件的每次更改都基于所有先前的更改,因此您需要使用一些类似于 rebase 的方法来一直重写 histoy,可能相当复杂......
-
谢谢@centic 我可以使用 jGit 将一个或多个提交重新设置到同一个分支吗?请参阅上面我更新的问题。