朋友们,
我是 git 新手。我对本地文件夹中的网站进行了更改。当我想推动它们通过时,发生了错误:
[拒绝] master -> master(非快进) 错误:无法将一些引用推送到“https://github.com/id/repo.git” 提示:更新被拒绝,因为当前分支的尖端落后 提示:它的远程对应物。集成远程更改(例如 提示:'git pull ...'),然后再次推送。
我提出了建议的拉取请求,没有意识到这会删除我所有的本地更改。
我的终端仍然显示以前的命令和提交。有没有办法将我的本地文件夹恢复到拉取请求之前的先前版本?
所以继续: 我试图推动提交,但被拒绝了。我不明白为什么。 然后我做了 git pull ,没有意识到它会删除我的本地更改。 然后我做了一个 git Reset,希望它能删除我最后的操作。
感谢您的帮助。
这是恢复丢失的提交的可能解决方案:
查找提交哈希:首先,您需要找到拉取之前提交的提交哈希。您可以通过查看 Git 日志来完成此操作。在终端中,输入
git log
并按 Enter 键。这将按时间倒序显示您所做的所有提交的列表。每个提交都有一个唯一的哈希值 - 一长串数字和字母。找到您要返回的提交的哈希值。
检出提交:获得提交哈希后,您可以使用
git checkout
命令检出该提交,后跟提交哈希。例如,如果您的提交哈希是 abc123
,您可以输入 git checkout abc123
并按 Enter 键。这会将您的工作目录更改为该提交时的状态。
创建一个新分支:由于您已签出提交,因此您不再位于任何分支上(您处于“分离的 HEAD”状态)。为了保留您的更改,您应该在进行此提交时创建一个新分支。您可以使用
git checkout -b
命令后跟新分支名称来执行此操作。例如,git checkout -b my-branch
。
现在,您的更改已保存在新分支上,您可以将此分支推送到远程存储库。
至于为什么你的推送最初被拒绝,很可能是因为在你上次拉取后,其他人推送到了远程存储库上的同一分支,所以你的本地分支位于远程分支后面。 Git 默认情况下不允许非快进更新,以防止覆盖工作。
将来,在开始进行更改之前,最好始终使用
git pull
从远程存储库中提取最新更改,以确保本地存储库是最新的。
我希望这有帮助!