这非常简单:如何模拟命令
git merge --abort
在 JGit 中?我需要在真正 merge 之前“预览”冲突
最佳答案
在 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();
它清空 merge 状态文件,然后将索引和工作目录重置为当前 HEAD 提交的内容。
为了测试两个提交是否可以 merge ,您还可以使用核心 merge 。这将避免将冲突的提交 checkout 到工作目录中,以便稍后重置它们。
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
}
关于git - 使用 JGit 中止 merge ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29807016/