在同一个分支上进行 JGit 结帐
JGit checkout over the same branch
我需要按顺序检查我用 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
,其中包含我要签出的提交的名称(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);
它没有抛出任何错误,但也没有检查标签。
嗯,似乎在Windows中使用JGit有时可能会产生与托管文件相关的冲突。我为解决这个反复出现的问题所做的是在每个 git checkout <ref_name>
之前执行 git clean --force
,然后执行 git reset --hard
。这对我来说完全没问题,因为我不需要阶段性改变...
问题是基本上在使用了一些文件之后(即使是以只读方式),它们被标记为已更改(我用 git status
验证了)。上面解释的解决方案意味着更多的操作,但完全解决了我的问题。
有关更多详细信息,请参阅有关这些操作的 git 文档:
并用 JGit 开发这两个动作的适当实现:
- 用 Clean Command 清洁。
- 重置为 Reset Command
我需要按顺序检查我用 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
,其中包含我要签出的提交的名称(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);
它没有抛出任何错误,但也没有检查标签。
嗯,似乎在Windows中使用JGit有时可能会产生与托管文件相关的冲突。我为解决这个反复出现的问题所做的是在每个 git checkout <ref_name>
之前执行 git clean --force
,然后执行 git reset --hard
。这对我来说完全没问题,因为我不需要阶段性改变...
问题是基本上在使用了一些文件之后(即使是以只读方式),它们被标记为已更改(我用 git status
验证了)。上面解释的解决方案意味着更多的操作,但完全解决了我的问题。
有关更多详细信息,请参阅有关这些操作的 git 文档:
并用 JGit 开发这两个动作的适当实现:
- 用 Clean Command 清洁。
- 重置为 Reset Command