获取以前的文件版本时出现git问题
我正在尝试获取以前版本的文件,如下所示:获取以前的文件版本时出现git问题,git,github,Git,Github,我正在尝试获取以前版本的文件,如下所示: git checkout <git-hash> 但我得到的只是 Everything up-to-date 我做错了什么 当我这样做的时候 git签出123456——src/test.c git commit-m“从commit 123456中带回test.c” 我明白了 目前不在任何分支上 123456是散列我假设123456是一个旧提交的名称,而不是一个文件的名称-从问题上看不清楚,因为 推送时,推送的是完整提交(定义树
git checkout <git-hash>
但我得到的只是
Everything up-to-date
我做错了什么
当我这样做的时候
git签出123456——src/test.c
git commit-m“从commit 123456中带回test.c”
我明白了
目前不在任何分支上
123456是散列我假设123456是一个旧提交的名称,而不是一个文件的名称-从问题上看不清楚,因为
推送时,推送的是完整提交(定义树的完整状态),而不是单个文件。git-push-ab-master
命令与git-push-ab-master:master
相同,这意味着“使用我的master
版本在远程ab
上更新master
”。“所有内容都是最新的”错误告诉您,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
123456
是您的文件名还是提交哈希?由于您没有提供文件名,我猜它是一个文件名,这意味着您签出了上次提交的版本。假设已经推送了提交,那么一切都是最新的似乎是合乎逻辑的。当您这样做时:
git checkout 123456
您现在处于“”模式,这意味着您所做的任何修改都不会被HEAD引用。这就解释了为什么gitpush说“一切都是最新的”:您不在任何分支中,所以您没有对其进行任何修改 但如果你遵循的是,并且做到: 您仅修改给定文件的工作树,但仍在当前分支中。
src/test.c
将被修改,然后您可以添加它,并提交,移动当前分支的HEAD
git checkout 123456
git checkout 123456 -- src/test.c