JGit checkout上次提交

时间:2017-03-29 19:39:36

标签: java git jgit

如何告诉JGit结账其父母?例如,如果我在主分支上遇到如下情况:

c815b27 newestCommit (HEAD -> master, origin/master, master)
e46dcaf previousCommit
b2d6867 previousPreviousCommit

我想从JGit调用一个类似于:

的命令
git.checkout().setName("c815b27~").call();

并且会导致将HEAD移动到提交e46dcaf的状态:

c815b27 newestCommit (origin/master, master)
e46dcaf previousCommit (HEAD)
b2d6867 previousPreviousCommit

然而,当我打电话给上述结账声明时,没有任何反应。我还遇到了以下声明,它也没有移动HEAD:

git.checkout().setStartPoint("c815b27~").call();

任何想法如何实现基于波形符(〜)或插入符号(^)符号移动到先前的提交,以及是否可以使用JGit API?

1 个答案:

答案 0 :(得分:3)

首先,您需要解析指向上一次提交的表达式。然后,您可以签出生成的提交ID。

例如:

ObjectId previousCommitId = git.getRepository().resolve( "HEAD^" );
git.checkout().setName( previousCommitId ).call();

请注意,签出提交detaches HEAD