2

我想将 Git 中的文件恢复到以前的提交。我的 .gitignore 文件忽略了该文件。在我最近的提交中,我不小心将其强制执行。

这个问题回答了如何恢复任何特定文件:Reset or revert a specific file to a specific revision using Git?

跑步:

git checkout 234234234b234234234c123424 build/includes/initialize.php

错误:

error: pathspec 'build/includes/initialize.php' did not match any file(s) known to git.

有任何想法吗?

4

2 回答 2

2

您必须指定错误的提交或错误的路径。

$ 混帐初始化
在 /.../.git/ 中初始化空的 Git 存储库
$ echo test.txt > .gitignore
$ git add .gitignore
[master (root-commit) 6ed8815] 提交 1
 1 个文件已更改,1 个插入(+)
 创建模式 100644 .gitignore
$ git commit -m "提交 1"
$ echo '版本 1' > test.txt
$ git add test.txt
您的 .gitignore 文件之一会忽略以下路径:
测试.txt
如果您真的想添加它们,请使用 -f。
致命:没有添加文件
$ git add -f test.txt
$ git commit -m "提交 2"
[主 b23a130] 提交 2
 1 个文件已更改,1 个插入(+)
 创建模式 100644 test.txt
$ echo '版本 2' > test.txt
$ git add test.txt
$ git commit -m "提交 3"
[master 60c1f24] 提交 3
 1 个文件更改,1 个插入 (+),1 个删除 (-)
$猫测试.txt
版本 2
$ git checkout b23a130 test.txt
$猫测试.txt
版本 1

如果我输入了错误的提交,我会收到以下错误消息:

$ git checkout 6ed8815 test.txt
错误:pathspec 'test.txt' 与 git 已知的任何文件都不匹配。

如果我输入了错误的路径名,我也会收到错误消息:

$ git checkout b23a130 other.txt
错误:pathspec 'other.txt' 与 git 已知的任何文件都不匹配。
于 2013-03-15T01:15:17.633 回答
0

错误信息:

error: pathspec 'build/includes/initialize.php' did not match any file(s) known to git

意味着您不在包含该文件的存储库中的正确目录中,build/includes/initialize.php或者该文件build/includes/initialize.php实际上不存在于存储库历史记录中的任何位置。

您可以运行git log -- build/includes/initialize.php以验证您是否能够查看修改此文件的提交日志(即使该文件当前已被删除)。如果这没有返回输出,则确认您在错误的目录中。

顺便说一句,一旦您将文件添加到 git,git 会自动跟踪对文件的更改,而不管该文件是否列出.gitignore。换句话说,后续添加不再需要指定-f

于 2013-03-15T01:38:44.257 回答