如何告诉 JGit check out 它的父节点?例如,如果我在 master 分支上遇到如下情况:
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
但是,当我调用上面的 checkout 语句时,没有任何反应。我也遇到过以下声明,它也不会移动 HEAD:
git.checkout().setStartPoint("c815b27~").call();
关于如何基于波浪号 (~) 或插入符 (^) 符号实现移动到上一个提交的任何想法,以及 JGit API 是否可行?
最佳答案
首先,您需要解析指向上一次提交的表达式。然后您可以检查生成的提交 ID。
例如:
ObjectId previousCommitId = git.getRepository().resolve( "HEAD^" );
git.checkout().setName( previousCommitId ).call();
注意 checkout 提交 detaches HEAD .
关于java - JGit check out 之前的提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43102701/