如何恢复已在 GIT 中推送的单个已提交文件?

dog*_*lin 4 git

我在网上做了一些研究,但我仍然无法弄清楚使用 GIT 恢复已推送到存储库的单个文件的最佳方法是什么。

我已经完成了 Git Revert,但它会恢复整个提交。因此,假设您在一次提交中有 2、3 个文件,但您只想恢复 1 个文件,这将不会很好地工作。

有任何想法吗?非常感谢

axi*_*iac 6

尝试这个:

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因为您要撤消的提交已被推送到远程存储库。这就是为什么你必须创建一个新的提交并推送它。


Dav*_*sch 2

首先,恢复提交,但不提交恢复:git revert --no-commit <SHA>。然后,取消暂存所有使用git reset. 然后您可以仅添加您想要的文件git add <file>。执行 a git commit,然后清理您的工作目录以匹配索引git checkout .