我在网上做了一些研究,但仍然无法确定使用GIT恢复已推送到存储库的单个文件的最佳方法。
我尝试了Git Revert,但它会还原整个提交。所以假设您在一个提交中有2、3个文件,但只想还原1个文件,那么这种方法并不适用。
有什么好的想法吗?非常感谢。
我在网上做了一些研究,但仍然无法确定使用GIT恢复已推送到存储库的单个文件的最佳方法。
我尝试了Git Revert,但它会还原整个提交。所以假设您在一个提交中有2、3个文件,但只想还原1个文件,那么这种方法并不适用。
有什么好的想法吗?非常感谢。
试试这个:
git reset HEAD~1 -- file1.txt
git checkout -- file1.txt
git commit
git push
git reset
会将文件file1.txt
在HEAD~1
(上一个提交,也就是错误更新之前的提交)的索引条目回退到它的状态。它不会修改工作树或当前分支。
git checkout
将file1.txt
的工作树版本与索引中的版本变得相同(这就是我们需要的版本,对吧?)
你不能使用git commit --amend
,因为你想要撤消的提交已经被推送到远程存储库。这就是为什么你必须创建一个新的提交并推送它。
git checkout HEAD~1 -- file1.txt
,从而减少一步操作。 - undefined首先,撤销提交,但不要提交撤销:git revert --no-commit <SHA>
。然后,使用git reset
取消暂存所有将被还原的文件。接下来,您可以使用git add <file>
添加您想要的文件。进行git commit
,然后使用git checkout .
清理您的工作目录以匹配索引。