Git Revert File – 将文件恢复到上一个提交

672 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第4天,点击查看活动详情

Git是一个版本控制系统,可帮助团队和个人跟踪和记录对文件或整个项目所做的更改。

在使用Git时,您通常会提交更改,然后将其推送到远程存储库。

假设您已经提交了很多,然后意识到您当前版本的更改是错误的。或者您发现一种情况需要您恢复到之前的提交,就像一个奇怪的错误。

手动将文件中的每一行代码更改为原始状态或特定提交状态,并进行新的提交可能会导致提交历史记录混乱。恢复文件是一种更干净的处理方式。

有很多可能的方法,但在本文中,您将学习最佳方法,git checkout方法。

如果您很着急,以下是命令:

$ git checkout SHA-HASH -- file/file-path

但假设你不着急。让我们首先学习如何定位所有以前的提交及其SHA哈希。然后,我们将了解如何将文件恢复到之前的提交。

如何查找提交 SHA/ID

有很多方法可以获取每个提交的SHA和详细信息。最好的方法是在终端中使用以下命令:

$ git log

此命令将显示您在项目中对所有文件及其哈希代码的所有提交列表:

s_E7BE213D0AE03E619B0ABFE8B0450BCDCD832D2BDB3CB303964F1820DADBA52A_1660857327507_image

但使用的一个更简单的命令是下面的命令,您可以在其中附加oneline选项:

$ git log —online

注意: oneline选项将输出显示为每行一个提交。

198d425 (HEAD -> main) initial
c368a1c new removal
bcbef35 updated readme 2
da9cc5f (origin/main) updated Readme
a5150af first commit

仅使用此命令将返回在该项目上所做的所有提交。如果您想将特定文件恢复到之前的提交,您必须首先看到对该文件的所有提交。

为此,请将文件名添加到命令中:

$ git log —online README.md

如果文件位于另一个文件夹中,你可以导航终端到该文件夹或使用命令中的文件路径,如下所示:

$ git log —online src/App.js

这将仅返回指定文件的提交和提交SHA哈希,然后是提交消息。你将使用SHA哈希来恢复您的文件:

198d425 (HEAD -> main) initial
c368a1c new removal
bcbef35 updated readme 2
da9cc5f (origin/main) updated Readme
a5150af first commit

如何将文件恢复到上一个提交

因此,现在你已经知道如何获取SHA代码,您可以使用git checkout命令通过传递文件名或文件路径将文件恢复到您想要的任何提交:

$ git checkout da9cc5f -- README.md

Or

$ git checkout 55a1dff -- src/App.js

只需确保要复原文件,然后再这样做,因为您将放弃当前对文件的本地更改。Git将把文件替换为指定的提交版本。仅当您确定并且不希望这些未保存的本地更改时,才使用此功能。

总结

在本文中,您学习了如何使用git checkout命令将文件恢复到之前的提交。感谢你的阅读!