使用JGit中止合并

这非常简单:如何模拟命令

git merge – 在J
Git中使用?我需要在真正的合并之前“预览”冲突 最佳答案 在JGit中没有直接等效的git merge –abort.此代码段可作为起点:

// clear the merge state
repository.writeMergeCommitMsg( null );
repository.writeMergeHeads( null );

// reset the index and work directory to HEAD
Git.wrap( repository ).reset().setMode( ResetType.HARD ).call();

它清空合并状态文件,然后将索引和工作目录重置为当前HEAD提交的内容.

为了测试是否可以合并两个提交,您还可以使用内核合并.这样可以避免将冲突提交检出到工作目录中,以便稍后重置它们.

RevCommit parentCommit = mergeCommit.getParent( 0 );
revWalk.parseHeaders( parentCommit );

ResolveMerger merger = ( ResolveMerger )MergeStrategy.RESOLVE.newMerger( repository, true );
merger.setWorkingTreeIterator( new FileTreeIterator( repository ) );
merger.setBase( parentCommit.getTree() );
if( !merger.merge( headCommit, mergeCommit ) ) {
  if( merger.failed() {
    throw new IllegalStateException( "Should not happen with in-core mergers" );
  }
  // inspect merger.getMergeResults() for further details
}
点赞