如何从分支中删除文件?

问题描述 投票:2回答:3

我不小心编辑了一些我不需要的文件并将它们推送到Github。

我想将它们还原到master上的版本。我试过了

git checkout -- <myfile>但这没有任何影响。

谁会知道该怎么办?

git
3个回答
3
投票

你需要reset your file locally to a previous version(例如@~,这是之前的提交)

git checkout @~ -- myfile

git commit -m "reset file"
git push

如果您没有提及先前的提交,git checkout会将您的文件恢复到索引中的当前状态...并且由于您自上次推送后没有修改该文件,因此其索引与HEAD相同。这就是为什么你的git checkout没有做任何事情:没有区别。

如果尚未推送,可以使用相同类型的命令恢复到GitHub上的内容:

git fetch
git checkout origin/master -- myfile
git commit -m "reset file to origin/master"
git push

0
投票

假设您也在master分支上,并且您刚刚推送的整个提交仅包含错误编辑的文件,那么此处考虑的另一个选项是git revert

git revert HEAD

这将在master之上添加一个新的提交,它会撤消所有不正确的文件编辑。然后,您只需将此恢复提交推送到远程。


0
投票

git checkout -- <myfile>适用于未提交的更改。在您的情况下,已经提交了更改。您需要执行以下操作

1)git reset HEAD~1 HEAD~1带你回一次提交。您可以将其更改为要撤消的提交数量。

2)git checkout -- <myfile>

3)git push origin <branch name> -f -f在这里是必要的,以强制推动这些变化,因为git将抵制这些变化。

VonC's answer将创建一个新的提交。如果您希望提交历史记录清理,请使用此选项

© www.soinside.com 2019 - 2024. All rights reserved.