Git 恢复文件
Git recover files
我将本地文件添加到 git 存储库 (git add .
) 并提交。
然后用 git rm *
删除文件并再次提交(第二次提交)。删除本地和远程文件。
如何将文件从 git(从第一次提交)恢复到同一个本地文件夹?
谢谢。
git reset --hard HEAD^
将使您的分支恢复一次提交并相应地更新工作树(恢复您的文件)。
此时您只需要推送到远程,如果您已经推送了之前的状态,则使用 --force
。
但是,如果您处于分离的 HEAD 状态,这将不起作用,您必须检查一下(参见 Tim 的回答)。
自从您提交后,本地文件是否存在于您分支机构 HEAD 的文件系统中甚至都无关紧要,因为它是 Git 历史的一部分。要从较早的提交中检索文件,您可以尝试将其签出:
git checkout abc123 -- path/to/some/file.ext
其中 abc123
是早期提交的 SHA-1 哈希值。如果您不知道 SHA-1
哈希是什么,只需从 bash 中找到 运行 git log
,然后找到较早的提交以及该提交的哈希。
编辑:
如果您真的想将整个分支恢复到某个较早的提交,那么通常安全的方法是通过 git revert
。所以,继续上面的例子,如果你想恢复最新的提交 abc123
,你可以尝试:
git revert abc123
这将在您的分支之上添加一个 new 提交,但是这只会在功能上撤消之前的 HEAD 提交所做的任何事情。这应该使您项目中的所有文件保持其早期状态。
返回提交 git reset HEAD~1
然后将其推送到源 git push -f origin branch_name
如果您只提交已删除的文件,那么您至少有两个选择:
创建一个还原旧提交的新提交
git revert HEAD
git push
将您的分支重置为之前的提交。
git reset --hard HEAD
git push -f
请注意,第二个选项是完全破坏性的。如果您在之前的提交中添加了任何其他更改,它也会撤消所有这些更改。此外,如果您与同一个分支上的另一个团队成员一起工作,那么 git push -f
会给他们带来问题。 这应该只作为最后的手段使用,或者如果您确定不会给其他人带来麻烦。
我将本地文件添加到 git 存储库 (git add .
) 并提交。
然后用 git rm *
删除文件并再次提交(第二次提交)。删除本地和远程文件。
如何将文件从 git(从第一次提交)恢复到同一个本地文件夹?
谢谢。
git reset --hard HEAD^
将使您的分支恢复一次提交并相应地更新工作树(恢复您的文件)。
此时您只需要推送到远程,如果您已经推送了之前的状态,则使用 --force
。
但是,如果您处于分离的 HEAD 状态,这将不起作用,您必须检查一下(参见 Tim 的回答)。
自从您提交后,本地文件是否存在于您分支机构 HEAD 的文件系统中甚至都无关紧要,因为它是 Git 历史的一部分。要从较早的提交中检索文件,您可以尝试将其签出:
git checkout abc123 -- path/to/some/file.ext
其中 abc123
是早期提交的 SHA-1 哈希值。如果您不知道 SHA-1
哈希是什么,只需从 bash 中找到 运行 git log
,然后找到较早的提交以及该提交的哈希。
编辑:
如果您真的想将整个分支恢复到某个较早的提交,那么通常安全的方法是通过 git revert
。所以,继续上面的例子,如果你想恢复最新的提交 abc123
,你可以尝试:
git revert abc123
这将在您的分支之上添加一个 new 提交,但是这只会在功能上撤消之前的 HEAD 提交所做的任何事情。这应该使您项目中的所有文件保持其早期状态。
返回提交 git reset HEAD~1
然后将其推送到源 git push -f origin branch_name
如果您只提交已删除的文件,那么您至少有两个选择:
创建一个还原旧提交的新提交
git revert HEAD git push
将您的分支重置为之前的提交。
git reset --hard HEAD git push -f
请注意,第二个选项是完全破坏性的。如果您在之前的提交中添加了任何其他更改,它也会撤消所有这些更改。此外,如果您与同一个分支上的另一个团队成员一起工作,那么
git push -f
会给他们带来问题。 这应该只作为最后的手段使用,或者如果您确定不会给其他人带来麻烦。