我正在尝试获取此文件的先前版本:
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是哈希
答案 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”:你不在任何分支中,所以你没有进行任何修改就可以推动。
git checkout 123456 -- src/test.c
您只修改给定文件的工作树,但您仍在当前分支中
src/test.c
将被修改,然后您可以添加它,然后提交,移动当前分支的HEAD
。
答案 2 :(得分:0)
123456
是你的文件名还是你的提交哈希#?由于您没有提供文件名,我猜它是一个文件名,这意味着您检出了上次提交的版本。假设已经推送了提交,那么所有内容都是最新的似乎是合乎逻辑的。