JGit 检出之前的提交
JGit checkout previous commit
如何让JGit检出它的父节点?例如,如果我在 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
但是,当我调用上面的结帐语句时,没有任何反应。我也遇到过以下语句,它也不会移动 HEAD:
git.checkout().setStartPoint("c815b27~").call();
关于如何根据波浪号 (~) 或插入符 (^) 符号移动到上一个提交的任何想法,以及 JGit 是否甚至可能 API?
首先,您需要解析指向上一次提交的表达式。然后您可以检查生成的提交 ID。
例如:
ObjectId previousCommitId = git.getRepository().resolve( "HEAD^" );
git.checkout().setName( previousCommitId ).call();
请注意检查提交 detaches HEAD。
如何让JGit检出它的父节点?例如,如果我在 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
但是,当我调用上面的结帐语句时,没有任何反应。我也遇到过以下语句,它也不会移动 HEAD:
git.checkout().setStartPoint("c815b27~").call();
关于如何根据波浪号 (~) 或插入符 (^) 符号移动到上一个提交的任何想法,以及 JGit 是否甚至可能 API?
首先,您需要解析指向上一次提交的表达式。然后您可以检查生成的提交 ID。
例如:
ObjectId previousCommitId = git.getRepository().resolve( "HEAD^" );
git.checkout().setName( previousCommitId ).call();
请注意检查提交 detaches HEAD。