拉取请求后,Git 恢复到以前的本地版本

问题描述 投票:0回答:1

朋友们,

我是 git 新手。我对本地文件夹中的网站进行了更改。当我想推动它们通过时,发生了错误:

[拒绝] master -> master(非快进) 错误:无法将一些引用推送到“https://github.com/id/repo.git” 提示:更新被拒绝,因为当前分支的尖端落后 提示:它的远程对应物。集成远程更改(例如 提示:'git pull ...'),然后再次推送。

我提出了建议的拉取请求,没有意识到这会删除我所有的本地更改。

我的终端仍然显示以前的命令和提交。有没有办法将我的本地文件夹恢复到拉取请求之前的先前版本?

所以继续: 我试图推动提交,但被拒绝了。我不明白为什么。 然后我做了 git pull ,没有意识到它会删除我的本地更改。 然后我做了一个 git Reset,希望它能删除我最后的操作。

感谢您的帮助。

git github git-revert
1个回答
0
投票

这是恢复丢失的提交的可能解决方案:

  1. 查找提交哈希:首先,您需要找到拉取之前提交的提交哈希。您可以通过查看 Git 日志来完成此操作。在终端中,输入

    git log
    并按 Enter 键。这将按时间倒序显示您所做的所有提交的列表。每个提交都有一个唯一的哈希值 - 一长串数字和字母。找到您要返回的提交的哈希值。

  2. 检出提交:获得提交哈希后,您可以使用

    git checkout
    命令检出该提交,后跟提交哈希。例如,如果您的提交哈希是
    abc123
    ,您可以输入
    git checkout abc123
    并按 Enter 键。这会将您的工作目录更改为该提交时的状态。

  3. 创建一个新分支:由于您已签出提交,因此您不再位于任何分支上(您处于“分离的 HEAD”状态)。为了保留您的更改,您应该在进行此提交时创建一个新分支。您可以使用

    git checkout -b
    命令后跟新分支名称来执行此操作。例如,
    git checkout -b my-branch

现在,您的更改已保存在新分支上,您可以将此分支推送到远程存储库。

至于为什么你的推送最初被拒绝,很可能是因为在你上次拉取后,其他人推送到了远程存储库上的同一分支,所以你的本地分支位于远程分支后面。 Git 默认情况下不允许非快进更新,以防止覆盖工作。

将来,在开始进行更改之前,最好始终使用

git pull
从远程存储库中提取最新更改,以确保本地存储库是最新的。

我希望这有帮助!

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.