学院网站建设项目范围变更申请表,建设工程公司名称大全,wordpress 引用样式,公司网站建设 阜阳我想以编程方式更新HEAD而不对非裸仓库执行checkout或rebase.我希望工作树和索引在操作后保持不变.编辑我需要更新HEAD的符号目标,而不是HEAD当前目标的提交ID.这更像是一个结账,而不是其他任何东西,除了我不能使用org.eclipse.jgit.api.CheckoutCommand因为它需要我更新路径,但…我想以编程方式更新HEAD而不对非裸仓库执行checkout或rebase.我希望工作树和索引在操作后保持不变.编辑我需要更新HEAD的符号目标,而不是HEAD当前目标的提交ID.这更像是一个结账,而不是其他任何东西,除了我不能使用org.eclipse.jgit.api.CheckoutCommand因为它需要我更新路径,但我不想触摸工作树. org.eclipse.jgit.api.CreateBranchCommand也不合适,因为它需要一个特定的起点,因为我正在创建一个孤儿分支,所以它不存在.解决方法:例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命令为您更新HEADclone,checkout和rebase.如果适用,请使用其中之一.这些都不适用checkout和rebase会改变工作树和索引.希望发布这个问题和答案将节省其他人我花在它上面的时间.标签jgit,java,git来源 https://codeday.me/bug/20190826/1727080.html