[英]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)
在發生這種情況之前,我嘗試使用
checkout.setName("branch-for-test").setStartPoint(key);
它沒有引發任何錯誤,但是也沒有簽出標簽。
好吧,似乎在Windows中使用JGit有時可能會產生與托管文件有關的沖突。 我為解決此反復出現的問題所做的工作是在每次git checkout <ref_name>
之前執行git clean --force
然后執行git reset --hard
。 這對我來說完全沒問題,因為我不需要進行更改...
問題在於,基本上在使用了某些文件(即使是以只讀方式)之后,它們也被標記為已更改(我使用git status
進行了驗證)。 上面解釋的解決方案意味着更多的操作,但完全解決了我的問題。
有關更多詳細信息,請參閱有關這些操作的git文檔:
並使用JGit開發這兩個動作的適當實現:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.