我不小心编辑了一些我不需要的文件并将它们推送到Github。
我想将它们还原到master上的版本。我试过了
git checkout -- <myfile>
但这没有任何影响。
谁会知道该怎么办?
你需要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
假设您也在master
分支上,并且您刚刚推送的整个提交仅包含错误编辑的文件,那么此处考虑的另一个选项是git revert
:
git revert HEAD
这将在master
之上添加一个新的提交,它会撤消所有不正确的文件编辑。然后,您只需将此恢复提交推送到远程。
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将创建一个新的提交。如果您希望提交历史记录清理,请使用此选项