【问题标题】:JGit get pulled filesJGit 获取拉取文件
【发布时间】:2016-07-15 08:54:52
【问题描述】:

我在两个不同的文件夹(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"

在这种情况下,我想要合并冲突

我想查看拉取的文件。我从here 得到了这个例子。

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 集合不是空的 - 它有 1 个文件“newFile”和 pullResult.getMergeResult().getMergeConflicts() 是 emtpy(很明显)。

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

【问题讨论】:

  • git pull 命令不显示有冲突和冲突错误的文件名吗?

标签: java git jgit


【解决方案1】:

我找到了答案。需要使用

ObjectId head = git.getRepository().resolve("refs/remotes/origin/HEAD^{tree}");

而不是

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

【讨论】:

    猜你喜欢
    • 2014-11-26
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    • 2017-03-28
    • 2016-10-27
    • 2011-06-15
    • 2012-11-12
    • 1970-01-01
    相关资源
    最近更新 更多