考慮我的本地存儲庫包含多個文件,同時檢查文件的特定提交時,存儲庫中的其他文件被刪除。如何使用JGit將文件重置爲特定提交?
我使用下面的API(git
是git倉庫的實例)
git.checkout().setName(commitId).call()
是檢查出特定提交特定文件的這個正確的方式?
考慮我的本地存儲庫包含多個文件,同時檢查文件的特定提交時,存儲庫中的其他文件被刪除。如何使用JGit將文件重置爲特定提交?
我使用下面的API(git
是git倉庫的實例)
git.checkout().setName(commitId).call()
是檢查出特定提交特定文件的這個正確的方式?
的setName()
的JavaDoc的說
當僅檢出路徑而不切換分支時,請使用
setStartPoint(}
指定從哪個分支或提交檢出文件。
而對於addPath()
它指出:
如果這個選項被設置,無論是
setCreateBranch()
也不setName()
選項考慮。換句話說,這些選項是獨佔的。
因此,我認爲你應該使用
git.checkout().addPath(...).setStartPoint(...).call();
您的通話重置指數(並可以刪除文件不再存在於新提交你看看)
你可以找一個更精確的例子jgit/porcelain/RevertChanges.java
// revert the changes
git.checkout().addPath(fileName).call();
在您的情況:
git.checkout().setname(commitId).addPath(fileName).call()
如果我們使用讓addpath(文件名)正在更新最新的承諾......這是不考慮的setName(的commitid)。@ VonC –
@RenganathanSelvaraju那可能是一個錯誤報告。 – VonC
謝謝SOOOO much..it的工作@魯迪格 –
順便說一句,我們可以使用\t \t \t \t \t git.checkout()setAllPaths(真).setStartPoint(Constants.HEAD).CALL()。檢出所有文件與最新版本...謝謝 –
比我更精確的答案。 +1 – VonC