使用Git检索文件的旧版本

时间:2013-05-22 10:20:56

标签: git staging git-checkout

说我想从几个提交前检索一个旧版本的文件(filename.html)。我是否正确地认为我需要做

git checkout sha -- filename.html

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

但是这会把文件放在我的登台索引中,而不是我的工作目录,对吗?因此,如果我现在运行git commit我的repo将更新以使旧文件恢复到原位,但我的工作目录仍将具有更新的文件(我不会再这样做了)。

我想我可以做一个git checkout -- filename.html让两个人同步,但这是最好的方法吗?这个过程看起来很像是一个可以迅速搞乱的过程。是否只有一种方法可以将旧版本的filename.html恢复到我的工作目录中而不会在我的暂存索引中“卡住”?

感谢。

2 个答案:

答案 0 :(得分:1)

  

但是这会把文件放在我的登台索引中,而不是我的工作目录,对吗?

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

  

如果我现在运行git commit我的repo会更新以使旧文件恢复原位,但我的工作目录仍然会有更新的文件

不,它将包含该文件的旧版本。

  

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

要返回最新版本,您必须:

git reset HEAD -- filename.html # remove it from the index
git checkout -- filename.html   # restore latest

答案 1 :(得分:1)

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

git show sha1:filename