git checkout oldversion但现在检查正在使用的版本

时间:2016-02-05 18:38:42

标签: git github

我有一个文件,比方说,test.txt。让我们说它的空文件和我提交它,所以我的第一次提交只是一个空文件。让我们说沙是2d37f7

现在让我说我编辑了文件并添加了一些文字" hello world"在文件中我提交了该文件。现在我有一个hello world版本的另一个哈希,让我们说哈希是eec1598

现在当我做git log时,我看到了这个

eec1598 (my last commit on top)
2d37f7 (my first empty file)

现在让我们说我想回到第一个文件,我做这样的事情

git checkout 2d37f7 test.txt

现在我检查文件,它是空的,哪个好。但是当我做的时候

git log test.txt

它向我展示了与上面相同的内容

eec1598 (my last commit on top)
2d37f7 (my first empty file)

此时我不知道哪个版本的test.txt是当前版本。我该如何找到它?

感谢

1 个答案:

答案 0 :(得分:2)

请注意git log中显示的shas用于提交,而不是文件。所以你要问的是如何确定哪个提交 test.txt的当前工作副本来自哪个。不幸的是,该信息不会存储在任何地方。在大多数情况下,没有单一的提交可以说文件来自,因为文件将在多次提交中具有相同的内容。

总而言之,在git checkout <sha> <filename>之后,git只会将您filename的工作副本视为您在本地更改过的任何其他文件;它不依赖于任何特定的提交。

现在,您可以使用git hash-object获取当前版本的test.txt的哈希值,然后将该哈希值传递给脚本,该脚本列出包含该文件版本的所有提交。要查看此类脚本的几个示例,请参阅this question的第一个答案。