有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JGit签出上一次提交

如何让JGit签出其父级?例如,如果我在主分支上遇到如下情况:

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

我想从JGit调用一个命令,它看起来像:

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

并将导致头部移动到提交e46dcaf的状态:

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

然而,当我调用上面的checkout语句时,什么也没有发生。我还遇到了以下陈述,这也不会改变我的想法:

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

如何实现基于波浪号(~)或插入符号(^)的上一次提交,以及JGITAPI是否可行


共 (1) 个答案

  1. # 1 楼答案

    首先,需要解析指向上一次提交的表达式。然后可以签出结果提交id

    例如:

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

    请注意,签出提交detaches HEAD