Member 12119299 Ответов: 0

Как удалить (отбросить) выбранные коммиты в 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();
			}
			
		}
	}

0 Ответов