It seems that the main JGit merge API (the MergeCommand class) does not provide a way to do in-core merging. It looks like it is supported, however, because there are interfaces in the source for creating in-core mergers. So I have two questions:
1) Does in-core merging work reliably or is this a feature that hasn't been fully implemented yet?
2) If it does work reliably, what is the recommended or simplest way to use this feature? Sample source code would be helpful.
1) It works reliable and is used by tools like gerrit
2) Some explanation:
The API in org.eclipse.jgit.api should expose what people know from native gits porcelain API. The names of the commands, options and so on should be the same as in native git so that developers who how to do something on the command line find fast how they do it with JGit.
Since native git merge doesn't expose "in-core" it's not in the MergeCommand.
But: this package is also meant that developers find out how to do things with JGit and find code examples there. If options are not exposed or if the org.eclipse.jgit.api is not efficient enough for your use case you can use the more low level API's. Very often you can write much faster and less resource consuming code when you don't use org.eclipse.jgit.api.
If you look at MergeCommand.call() you see how we construct mergers. If in this call you add a second parameter true you'll get a incore merger. You have two chances. Copy the code to your app and create a incore merger as explained. Or propose a new option to the MergeCommand.