这非常简单:如何模拟命令
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
}