Как удалить (отбросить) выбранные коммиты в JGIT
У меня есть требование, когда в JGIT есть 10 коммитов. И среди них мне нужно удалить (отбросить) 5 коммитов. Оставшиеся 5 коммитов выталкиваются.
Мне нужен код JGIT, чтобы найти, какие коммиты не выталкиваются, и я хочу их отбросить.
В настоящее время я пытаюсь перебазировать с помощью JGIT. И мог бы найти все коммиты, которые не толкаются. Но если они находятся между выталкиваемыми коммитами, то как их найти, отбросить?
Что я уже пробовал:
public void discardUnpublishedChanges(String userId, String levelToDiscard) throws IOException, GitAPIException { System.out.println("In DAO : discardUnpublishedChanges()"); String release = this.getReleaseByUserId(userId); String projectPath = getProjectPath(userId); Git git = getGit(projectPath); List<Ref> calls = git.branchList().call(); for (Ref ref : calls) { List<Integer> counts = getCounts(git.getRepository(), ref.getName()); if(ref.getName().equals("refs/heads/master") && (counts.get(0) > 0)) { System.out.println("branch is behind by " + counts.get(1) + " commits"); System.out.println("branch is ahead by " + counts.get(0) + " commits"); System.out.println("local workspace has " + counts.get(0) + " saved changes which are not yet published"); logger.debug("branch is behind by " + counts.get(1) + " commits"); logger.debug("branch is ahead by " + counts.get(0) + " commits"); logger.debug("local workspace has " + counts.get(0) + " saved changes which are not yet published"); RebaseResult res = git.rebase().setUpstream("origin/master").runInteractively(new InteractiveHandler() { List<RebaseTodoLine> temps = new ArrayList<>(); public void prepareSteps(List<RebaseTodoLine> steps) { for(RebaseTodoLine step :steps) { System.out.println("original:"+step.getShortMessage()); } } public String modifyCommitMessage(String commit) { return "rewritten commit message"; } }).call(); } } }