2

假设我想从几次提交中检索旧版本的文件 (filename.html)。我是否认为我需要做

git checkout sha -- filename.html

(其中 sha 是我想要的提交的哈希)

但这会将文件放在我的暂存索引中,而不是我的工作目录中,对吗?因此,如果我现在运行git commit我的 repo 将更新以将旧文件放回原处,但我的工作目录仍将包含较新的文件(我不会再这样做了)。

我想我可以做一个git checkout -- filename.html让两者重新同步,但这是最好的方法吗?这个过程似乎是一个漫长的过程,很快就会变得一团糟。有没有办法让旧版本的 filename.html 回到我的工作目录中,而不会“卡在”我的暂存索引中?

谢谢。

4

2 回答 2

1

但这会将文件放在我的暂存索引中,而不是我的工作目录中,对吗?

它会将旧版本放在索引工作树中。

如果我现在运行 git commit 我的 repo 将更新以将旧文件放回原处,但我的工作目录仍将包含较新的文件

不,它将具有该文件的旧版本。

我想我可以做一个 git checkout -- filename.html 让两者重新同步,但这是最好的方法吗?

要恢复到最新版本,您必须:

git reset HEAD -- filename.html # remove it from the index
git checkout -- filename.html   # restore latest
于 2013-05-22T10:47:17.693 回答
1

如果您只想查看文件而不打算提交它,您可以简单地说

git show sha1:filename
于 2013-05-22T11:01:22.563 回答