获取以前的文件版本的git问题

时间:2011-03-29 12:21:52

标签: git github

我正在尝试获取此文件的先前版本:

git checkout <git-hash>

在此之后,我看到我的高清文件是以前的版本。我该怎么推? 这个版本到服务器???我尝试了以下方法:

git push ab master

但我得到的只是

Everything up-to-date

我做错了什么?


当我做的时候

git checkout 123456 -- src/test.c

git commit -m "Bringing back test.c from commit 123456"

我得到了

Not currentyly on any branch

123456是哈希

3 个答案:

答案 0 :(得分:2)

我假设123456是旧提交的名称,而不是文件的名称 - 从问题中不清楚,Ben Hocking points out

推送时,推送完整提交(定义树的完整状态)而不是单个文件。 git push ab master命令与git push ab master:master相同,这意味着使用我的master版本在远程ab上“更新master”。错误“Everything up-to”告诉您master分支的所有历史记录包含在远程master分支中。

相反,您需要使用该文件的旧版本创建新的提交。你可以这样做:

# Make sure that you're back on the master branch first:
git checkout master 

git checkout 123456 -- src/test.c
git commit -m "Bringing back test.c from commit 123456"
git push ab master

答案 1 :(得分:2)

当你这样做时:

git checkout 123456 

您现在处于“detached HEAD”模式,这意味着您所做的任何修改都不会被HEAD引用。
这就解释了为什么git push说“Everything up-to-date”:你不在任何分支中,所以你没有进行任何修改就可以推动。

但是,如果您关注Markadvice并执行:

git checkout 123456 -- src/test.c

您只修改给定文件的工作树,但您仍在当前分支中 src/test.c将被修改,然后您可以添加它,然后提交,移动当前分支的HEAD

答案 2 :(得分:0)

123456是你的文件名还是你的提交哈希#?由于您没有提供文件名,我猜它是一个文件名,这意味着您检出了上次提交的版本。假设已经推送了提交,那么所有内容都是最新的似乎是合乎逻辑的。