gpt4 book ai didi

java - JGit 在同一分支上 checkout

转载 作者:行者123 更新时间:2023-12-02 04:09:13 28 4
gpt4 key购买 nike

我需要按顺序检查我使用 JGit 创建的分支上的标签。

CheckoutCommand checkout = new Git(testRepository).checkout();

if (!branchExists())
checkout.setCreateBranch(true).setName("branch-for-test").setStartPoint(key);
else
checkout.setName(key);

checkout.call();

其中key是一个String,其中包含我想要 checkout 的提交的名称(key在循环中更改)。我不想每次结账时都创建一个分支,因为我不需要。显示以下错误:

org.eclipse.jgit.api.errors.JGitInternalException: Could not rename file target\TestRepository\server\db\scripts\postgresql\._db_script.sql6197897692249726905.tmp to target\TestRepository\server\db\scripts\postgresql\_db_script.sql
at org.eclipse.jgit.api.CheckoutCommand.call(CheckoutCommand.java:320)

在发生这种情况之前,我试图在 else 语句中使用

checkout.setName("branch-for-test").setStartPoint(key);

它没有抛出任何错误,但也没有 checkout 标签。

最佳答案

嗯,看来在 Windows 中使用 JGit 有时可能会产生与托管文件相关的冲突。我为解决这个反复出现的问题所做的就是执行 git clean --force随后是 git reset --hard在每个 git checkout <ref_name> 之前。这对我来说完全没问题,因为我不需要进行阶段性更改...

问题是基本上在使用一些文件(即使以只读方式)之后,它们被标记为已更改(我使用 git status 进行了验证)。上面解释的解决方案意味着更多的操作,但完全解决了我的问题。

有关更多详细信息,请参阅有关这些操作的 git 文档:

  • Git clean :从工作树中删除未跟踪的文件。
  • Git reset :将当前HEAD重置为指定状态。

并使用 JGit 开发这两个操作的适当实现:

关于java - JGit 在同一分支上 checkout ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33961511/

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