TL;博士 JGit的checkout
拋出異常,同時命令行git checkout
工作正常JGit結帳VS'混帳checkout`問題
我目前正試圖用JGit從在線Git倉庫檢查了一定的修改,在Java(用於工作)。我目前的做法是(我很新的混帳,從SVN背景的,所以這可能是錯誤的):
- 克隆庫到一個臨時位置在我的硬盤
- 弄清楚哪些(我曾嘗試使用SHA-1散列以及分支的名稱)
- 結帳該修訂版
- 從那裏,我將使用檢出的文件作爲輸入到後來的部分該程序。
- 結賬不同的修訂
- 使用這些文件作爲輸入到程序
本質上的另一部分,我希望能夠用哪個版本來交換我的temp文件夾中的內容。使用命令行界面,我已經可以通過git checkout master
和git checkout dylanbranch
(其中dylanbranch是我自己創建的一個分支並使用任意選擇的修訂版本)執行此操作,但是我的Java代碼嘗試執行相同的操作失敗:
Git git = Git.open(new File("checkout")); //checkout is the folder with .git
git.checkout().setName("master").call(); //succeeds
git.checkout().setName("dylanbranch").call(); //fails
的例外打印到控制檯:
Exception in thread "main" org.eclipse.jgit.api.errors.JGitInternalException: Checkout conflict with files:
src/sizzle
test/qunit
at org.eclipse.jgit.api.CheckoutCommand.call(CheckoutCommand.java:211)
at com.avi.scm.git.BranchCheckout.main(BranchCheckout.java:30)
Caused by: org.eclipse.jgit.errors.CheckoutConflictException: Checkout conflict with files:
src/sizzle
test/qunit
at org.eclipse.jgit.dircache.DirCacheCheckout.checkout(DirCacheCheckout.java:387)
at org.eclipse.jgit.api.CheckoutCommand.call(CheckoutCommand.java:162)
... 1 more
我可以確認有問題的文件被標記爲刪除而不是通過使用git status
雖然我不知道爲什麼這些變化上演承諾那裏,他們回來後,我回到主分支。儘管如此,我仍然可以使用命令行Git成功更改工作樹。
所以我的問題:爲什麼JGit不會爲這個應用程序工作時命令行git會? 任何其他有用的信息appreciated-教育我:)
更新我一直用的jQuery庫測試,並已經注意到了其他幾個問題與JGit:當我用「master」分支工作, git status
我認爲我是#On branch master
並且有nothing to commit (working directory clean)
,但是使用JGit的狀態命令我看到test/qunit
和src/sizzle
被標記爲Missing
。 JGit的重置似乎什麼都不做。
感謝您的鏈接,+1 對於其他人試圖做同樣的事情,我目前的攻擊計劃是提交JGit看到的「變化」,以便我可以檢查其他事情。 (基本上忽略子模塊,就像JGit) – Dylan
你可以試試JGit版本[這裏](https://hudson.eclipse.org/hudson/job/jgit/855/artifact/org.eclipse.jgit.packaging/org。 eclipse.jgit.updatesite/target/site/plugins/org.eclipse.jgit_1.2.0.201109151733.jar),看看你是否得到相同的衝突異常? –
新版本確實解決了我的問題(儘管當您嘗試覆蓋/更新現有克隆時,克隆命令現在會中斷)。 – Dylan