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

5

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

我尝试了Git Revert,但它会还原整个提交。所以假设您在一个提交中有2、3个文件,但只想还原1个文件,那么这种方法并不适用。

有什么好的想法吗?非常感谢。


非常快速的谷歌搜索“git revert a file”导致了这个链接:git: revert (reset) a single file - zedfoxus
1
这是关于编程的内容,请将以下文本从英语翻译成中文。仅返回已翻译的文本:这是未提交的更改。我的更改已经被提交并推送。 - doglin
1
将文件恢复到以前的版本,使用git revert命令。 - zedfoxus
这个回答解决了你的问题吗?如何将文件重置或还原到特定的版本? - undefined
2个回答

9

试试这个:

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

工作原理

git reset 会将文件file1.txtHEAD~1(上一个提交,也就是错误更新之前的提交)的索引条目回退到它的状态。它不会修改工作树或当前分支。

git checkoutfile1.txt的工作树版本与索引中的版本变得相同(这就是我们需要的版本,对吧?)

你不能使用git commit --amend,因为你想要撤消的提交已经被推送到远程存储库。这就是为什么你必须创建一个新的提交并推送它。


小建议 - 你也可以只使用 git checkout HEAD~1 -- file1.txt,从而减少一步操作。 - undefined

2

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接