我正在开发基于Eclipse Foundation的基于JGit的Git插件,并且我已经有一位同事实现了“ Restart merge”,用于在尝试执行默认请求(合并)时发生冲突。 。
现在我正在执行“ Pull(rebase)”操作。当发生冲突并且用户在冲突文件中进行了一些更改时,我希望让他们能够重新启动合并。我注意到有些Git客户端没有此选项(例如Eclipse的EGit,GitKraken Free),而有些则没有(SourceTree)。
我当前的代码如下:
public void restartMerge() {
try {
RepositoryState repositoryState = getRepository().getRepositoryState();
String revision = repositoryState == RepositoryState.REBASING_MERGE ? "HEAD" : "MERGE_HEAD";
AnyObjectId commitToMerge = getRepository().resolve(revision);
git.clean().call();
git.reset().setMode(ResetType.HARD).call();
if (repositoryState == RepositoryState.REBASING_MERGE) {
// TODO: regenerate the conflict
} else {
git.merge().include(commitToMerge).setStrategy(MergeStrategy.RECURSIVE).call();
}
fireFileStateChanged(new ChangeEvent(GitCommand.MERGE_RESTART, Collections.<String> emptyList()));
} catch (IOException | NoRepositorySelected | GitAPIException e) {
if (logger.isDebugEnabled()) {
logger.debug(e, e);
}
}
}
[我认为我必须再次进行基准调整或类似的操作才能重新产生冲突,就像我的同事做了一个新的merge()
。但是,此时我处于一个分离的HEAD上...我试图移至master
分支,并再次以origin/master
作为上游重新设基,但是它没有用...
Git命令对于重新启动基准冲突会是什么?也许我可以使用JGit执行它们...
您可以尝试运行git rebase --abort
,并根据情况使用git pull --rebase
重新启动基准。