gpt4 book ai didi

java - 如何使用 jgit 库将 git HEAD 指向特定的 ref?

转载 作者:太空狗 更新时间:2023-10-29 13:53:51 25 4
gpt4 key购买 nike

我想以编程方式更新 HEAD,而不是在非裸仓库上执行 check out 或 rebase 。

我希望操作后工作树和索引不变。

编辑

我需要更新 HEAD 的符号目标,而不是 HEAD 当前目标的提交 ID。这更像是 checkout ,除了我不能使用 org.eclipse.jgit.api.CheckoutCommand 因为它需要我更新路径,但我不想触及工作树。 org.eclipse.jgit.api.CreateBranchCommand 也是不合适的,因为它需要一个特定的起点,但它不存在,因为我正在创建一个孤立的分支。

最佳答案

这对我有用:RefUpdate.link() .

例子:

Result updateHead(
Repository repo, String newHead, boolean force, boolean detach
) throws IOException {
RefUpdate refUpdate = repo.getRefDatabase().newUpdate(Constants.HEAD, detach);
refUpdate.setForceUpdate(force);
return refUpdate.link(newHead);
}

答案埋在jgit源代码中的大约5个地方。

jgit v2.0.0.201206130900-r 中的三个 api 命令为您更新 HEAD:clone、checkout 和 rebase。如果适用,请使用其中之一。

这些都不适用:checkout 和 rebase 会更改工作树和索引。

希望发布这个问题和答案可以节省其他人我不得不花在这上面的时间。

关于java - 如何使用 jgit 库将 git HEAD 指向特定的 ref?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12147794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com