JGit 中的存储库状态合并
Repository state Merging in JGit
我正在尝试以编程方式解决合并冲突,即强制合并。
解决合并冲突后,如果我尝试提交,我会得到以下异常:
org.eclipse.jgit.api.errors.WrongRepositoryStateException: Cannot commit into a repository with state: MERGING.
如何更改存储库状态或者我是否遗漏了什么。
代码片段:
if((RepositoryState.SAFE == pullCommand.getRepository().getRepositoryState())) {
PullResult result = pullCommand.call();
if(MergeStatus.CONFLICTING == result.getMergeResult().getMergeStatus()){
mgCmd = git.merge();
mgCmd.include(repo.getRef("refs/remotes/origin/development"));
mgCmd.setStrategy(MergeStrategy.OURS);
mgCmd.setCommit(true);
res = mgCmd.call();
System.out.println("Failing Path ==="+res.getFailingPaths());
pullCommand.getRepository().resolve("C:\CODE\thin\thinclient\.git");
if(res.getMergeStatus().equals(MergeResult.MergeStatus.CONFLICTING)){
System.out.println("Merge status=========+++"+res.getMergeStatus());
}
MergeCommand
并不是为了解决合并冲突。反之亦然,如果被包含的ref(s)不能无冲突地合并,就会导致合并冲突。
PullCommand
是一个复合命令,它首先从上游获取提交,然后尝试使用 MergeCommand
.
合并它们
为了以编程方式解决合并冲突,您需要相应地更改本地工作目录中的文件,将它们添加到索引中,然后发出 merge commit.
有关冲突文件的信息可以在 pullResult.getMergeResult()
中找到。可以使用常规 CommitCommand
.
创建 merge commit
我正在尝试以编程方式解决合并冲突,即强制合并。 解决合并冲突后,如果我尝试提交,我会得到以下异常:
org.eclipse.jgit.api.errors.WrongRepositoryStateException: Cannot commit into a repository with state: MERGING.
如何更改存储库状态或者我是否遗漏了什么。 代码片段:
if((RepositoryState.SAFE == pullCommand.getRepository().getRepositoryState())) {
PullResult result = pullCommand.call();
if(MergeStatus.CONFLICTING == result.getMergeResult().getMergeStatus()){
mgCmd = git.merge();
mgCmd.include(repo.getRef("refs/remotes/origin/development"));
mgCmd.setStrategy(MergeStrategy.OURS);
mgCmd.setCommit(true);
res = mgCmd.call();
System.out.println("Failing Path ==="+res.getFailingPaths());
pullCommand.getRepository().resolve("C:\CODE\thin\thinclient\.git");
if(res.getMergeStatus().equals(MergeResult.MergeStatus.CONFLICTING)){
System.out.println("Merge status=========+++"+res.getMergeStatus());
}
MergeCommand
并不是为了解决合并冲突。反之亦然,如果被包含的ref(s)不能无冲突地合并,就会导致合并冲突。
PullCommand
是一个复合命令,它首先从上游获取提交,然后尝试使用 MergeCommand
.
为了以编程方式解决合并冲突,您需要相应地更改本地工作目录中的文件,将它们添加到索引中,然后发出 merge commit.
有关冲突文件的信息可以在 pullResult.getMergeResult()
中找到。可以使用常规 CommitCommand
.