这非常简单:如何模拟命令
JGit中的git merge --abort
?我需要在真正的合并之前“预览”冲突
答案 0 :(得分:2)
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
}