无法从Git提交中获取已删除的文件



我使用git从rails应用程序中删除了一些文件。他们被承诺并被推到Heroku(现场)。现在,我想把他们中的一些带回来,但我做起来有困难。我一直在使用git一段时间,不确定我做错了什么。我已经检查了几个git页面,以确保这应该工作。

文件不在我的本地存储库中,而是在git中。Git列出了它们(在我的例子中显示了一个),但不让我检索它们。

我找到了提交,下面显示了记录的提交中的文件:

jdc44@jdc44-Kudu:~/Websites/myapp$ git diff-tree --no-commit-id --name-only -r 9c88a26ade871
...
app/models/fitness/weight.rb
...

试图恢复权重。rb文件:

jdc44@jdc44-Kudu:~/Websites/myapp$ git checkout 9c88a26ade871 -- app/models/fitness/weight.rb
error: pathspec 'app/models/fitness/weight.rb' did not match any file(s) known to git

试着看看我是否可以显示文件:

jdc44@jdc44-Kudu:~/Websites/myapp$ git show 9c88a26ade871:app/models/fitness/weight.rb
fatal: Path 'app/models/fitness/weight.rb' does not exist in '9c88a26ade871'

jdc44@jdc44-Kudu:~/Websites/myapp$ git diff-tree -r 9c88a26ade871
9c88a26ade8719069ecd852b27a6bb354a4915f2
:100644 000000 ba4631114edea7c66e8f87109dc6e65fb95b7a6c 0000000000000000000000000000000000000000 D  app/controllers/fitness/weights_controller.rb
:100644 000000 cfca94348c82c4a6fab1c789245582cc3086f786 0000000000000000000000000000000000000000 D  app/models/fitness/weight.rb
:100644 000000 4963ad7f7939f74606b5356e264dc20c1382165b 0000000000000000000000000000000000000000 D  app/views/fitness/weights/_form.html.erb
:100644 000000 9c3f9b7f3f7177d7ba4b5609f3aa5c0769b7d1e1 0000000000000000000000000000000000000000 D  app/views/fitness/weights/create.html.erb
:100644 000000 3b9e22e45116d15eab5a494ce342307cac1ce405 0000000000000000000000000000000000000000 D  app/views/fitness/weights/delete.html.erb
:100644 000000 8e3ec02483b68e8f5a2e8de23f569dbd359d3d95 0000000000000000000000000000000000000000 D  app/views/fitness/weights/destroy.html.erb
:100644 000000 d59b3be0408d467bcedf1ac43e82916e338d30d9 0000000000000000000000000000000000000000 D  app/views/fitness/weights/edit.html.erb
:100644 000000 84a1dd6e73c35a612e4e52476d440fd7a659b657 0000000000000000000000000000000000000000 D  app/views/fitness/weights/index.html.erb
:100644 000000 4980c3adecc0b86528d99f7828c5369f185a1ba2 0000000000000000000000000000000000000000 D  app/views/fitness/weights/new.html.erb
:100644 000000 eb61383cc1e256e386357930d9db8bf88379ad2c 0000000000000000000000000000000000000000 D  app/views/fitness/weights/show.html.erb
:100644 000000 43f9c0adea7cff97c240bd02db495e908231bfd4 0000000000000000000000000000000000000000 D  app/views/fitness/weights/update.html.erb

Git中的每次提交都是当时所有文件的完整快照。9c88a26ade871没有app/models/fitness/weight文件。因为这是你删除它的提交。

您需要在删除它之前从commit获取它。9 c88a26ade871 ^。看到gitrevisions。

git checkout 9c88a26ade871^ -- app/models/fitness/weight.rb

或者使用更简单的git restore(签出分为恢复和切换)。

git restore --source 9c88a26ade871^ app/models/fitness/weight.rb

最新更新