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

时间:2015-06-19 14:41:31

标签: git

我已经在线完成了一些研究,我仍然无法弄清楚恢复使用GIT推送到存储库的单个文件的最佳方法。

我已经完成了Git Revert,但它还原了整个提交。因此,假设您在提交中有2个,3个文件,但您只想恢复1个文件,那将无法正常工作。

有什么想法吗?非常感谢

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

试试这个:

git reset HEAD~1 -- file1.txt
git checkout -- file1.txt
git commit 
git push

如何运作

git resetfile1.txt的索引条目带到HEAD~1上的状态(先前的提交,即错误更新之前的提交)。它不会修改工作树或当前分支。

git checkout使file1.txt的工作树版本与索引中的版本相同(这是我们需要的版本,对吗?)

您无法使用git commit --amend,因为您要撤消的提交已被推送到远程存储库。这就是你必须创建一个新提交并推送它的原因。