Git:使用 checkout 命令和提交恢复到特定文件的旧版本

sha*_*anu 1 git git-checkout

我想恢复到特定文件的先前版本。
我正在使用以下命令。

git checkcout <commit hash> <file-name>
Run Code Online (Sandbox Code Playgroud)

现在我想提交这个文件。
我在做

git commit -a.
Run Code Online (Sandbox Code Playgroud)

它给了我以下消息

“无需提交,工作目录干净”

编辑:所有这些提交都已推送到远程存储库。

mer*_*011 5

下面的命令将 HEAD 指针移动到旧提交。

 git checkout <commit hash> <file-name>
Run Code Online (Sandbox Code Playgroud)

您可能打算执行以下命令,该命令将“恢复到特定文件的先前版本”,而不移动当前 HEAD。

 git checkout <commit hash> -- <file-name>
Run Code Online (Sandbox Code Playgroud)

在上面的命令之后,git status将显示文件被修改。然后,您可以git commit -a在当前提交的顶部提交文件。

更新:如果您之前移动了 HEAD 指针,您很可能希望在运行上面的命令并提交之前将其移回您的工作分支。所以完整的命令序列应该是:

 git checkout master
 git checkout <commit hash> -- <file-name>
 git commit -a 
Run Code Online (Sandbox Code Playgroud)