JGit获取已拉取文件

7

我有一个仓库在不同的文件夹(folder1folder2)中。这些仓库中有一个名为"oldFile"的文件。

folder1中,我执行以下步骤:

echo 123 > oldFile
touch newFile
git add newFile oldFile
git commit -m "Change the oldFile from folder1 and add the newFile" oldFile newFile
git push origin master

接着,在folder2里面,我执行以下步骤:

echo zxc > oldFile;
git add oldFile;
git commit oldFile -m "Change oldFile from folder2"

在这种情况下,我希望出现合并冲突。我想要查看已拉取的文件。我从这里获取了示例。
ObjectId oldHead = repository.resolve("HEAD^{tree}"); //save old objectId

PullResult pullResult = pullCommand.setProgressMonitor(new TextProgressMonitor(new OutputStreamWriter(System.out))).call();

ObjectId head = repository.resolve("HEAD^{tree}");

ObjectReader reader = repository.newObjectReader();
CanonicalTreeParser oldTreeIter = new CanonicalTreeParser();
oldTreeIter.reset(reader, oldHead);
CanonicalTreeParser newTreeIter = new CanonicalTreeParser();
newTreeIter.reset(reader, head);
List<DiffEntry> diffs= git.diff()
                    .setNewTree(newTreeIter)
                    .setOldTree(oldTreeIter)
                    .call();

pullResult.getMergeResult().getMergeConflicts()中,我只有一个文件oldFile,而diffs集合为空。

在简单的情况下(当我不改变来自folder2的“OldFile”时),diffs集合不为空 - 它有一个名为“newFile”的文件,并且pullResult.getMergeResult().getMergeConflicts()为空(这是显然的)。

我做错了什么?我想获得冲突的文件和成功拉取的文件。


git pull 命令不会显示出现冲突的文件名和冲突错误吗? - jarvo69
1个回答

4
我找到了答案。需要使用以下内容:ObjectId head = git.getRepository().resolve("refs/remotes/origin/HEAD^{tree}"); 取代 ObjectId head = repository.resolve("HEAD^{tree}");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接