我在网上做了一些研究,但我仍然无法弄清楚使用 GIT 恢复已推送到存储库的单个文件的最佳方法是什么。
我已经完成了 Git Revert,但它会恢复整个提交。因此,假设您在一次提交中有 2、3 个文件,但您只想恢复 1 个文件,这将不会很好地工作。
有任何想法吗?非常感谢
尝试这个:
git reset HEAD~1 -- file1.txt
git checkout -- file1.txt
git commit
git push
Run Code Online (Sandbox Code Playgroud)
git reset使 的索引条目处于file1.txt其状态HEAD~1(上一次提交,错误更新之前的提交)。它不会修改工作树或当前分支。
git checkout使工作树版本file1.txt与索引中的版本相同(这是我们需要的版本,对吗?)
您无法使用,git commit --amend因为您要撤消的提交已被推送到远程存储库。这就是为什么你必须创建一个新的提交并推送它。
首先,恢复提交,但不提交恢复:git revert --no-commit <SHA>。然后,取消暂存所有将使用git reset. 然后您可以仅添加您想要的文件git add <file>。执行 a git commit,然后清理您的工作目录以匹配索引git checkout .。