如何从分支中删除文件?

时间:2017-12-20 05:52:39

标签: git

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

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

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

有人知道该怎么做吗?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

git revert HEAD

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

答案 2 :(得分: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将创建一个新提交。如果您希望提交历史记录清理,请使用此选项。