Eclipse 如何使用JGit将文件重置为特定提交?

Eclipse 如何使用JGit将文件重置为特定提交?,eclipse,git,jgit,Eclipse,Git,Jgit,假设我的本地存储库包含多个文件,在签出文件的特定提交时,存储库中的其他文件被删除 我正在使用以下API(git是git存储库的实例) git.checkout().setName(commitId.call()) 这是签出特定文件的特定提交的正确方法吗?您的呼叫重置索引(并且可以删除您签出的新提交中不再存在的文件) 您可以在中查找更精确的示例 就你而言: git.checkout().setname(commitId).addPath(fileName).call() setName()的J

假设我的本地存储库包含多个文件,在签出文件的特定提交时,存储库中的其他文件被删除

我正在使用以下API(
git
是git存储库的实例)

git.checkout().setName(commitId.call())
这是签出特定文件的特定提交的正确方法吗?

您的呼叫重置索引(并且可以删除您签出的新提交中不再存在的文件)

您可以在中查找更精确的示例

就你而言:

git.checkout().setname(commitId).addPath(fileName).call()

setName()的JavaDoc说

仅签出路径而不切换分支时,请使用
setStartPoint(}
指定从哪个分支或提交签出文件

对于
addPath()
它指出:

如果设置了此选项,则不会考虑
setCreateBranch()
setName()
选项。换句话说,这些选项是独占的

因此我认为你应该使用

git.checkout().addPath(…).setStartPoint(…).call();

如果我们使用addPath(fileName),它将更新最新的提交…它不考虑setname(commitId)@VonC@RenganathanSelvaraju那可能是一个需要报告的bug。顺便说一下,我们可以使用git.checkout().setAllPath(true).setStartPoint(Constants.HEAD).call();签出所有最新版本的文件…谢谢比我的答案更准确。+1
git.checkout().setname(commitId).addPath(fileName).call()