如何告诉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?
答案 0 :(得分:3)
首先,您需要解析指向上一次提交的表达式。然后,您可以签出生成的提交ID。
例如:
ObjectId previousCommitId = git.getRepository().resolve( "HEAD^" );
git.checkout().setName( previousCommitId ).call();
请注意,签出提交detaches HEAD。