撤消“git Push -f origin”

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

最初,我的目的是使用此问题的答案之一中的以下命令从我的 GitHub 存储库之一中删除一些很久以前的提交:撤消“git Push”

git push -f origin commit:branch

显然,我分心了,似乎忘记了这样我将“撤消”所引用的所有提交。另外,通常使用 GitHub Desktop 仅在我的私人存储库中提交/推送/拉取,我可能不明白 Git 如何在命令行上工作(所有这些“复杂”的东西都是可能的)。当 GitHub Desktop 建议将(?)63 次提交推送到远程存储库时,我意识到我可能搞砸了。是的,我非常惊慌并删除了我的本地副本 - 只是再次拉取存储库并意识到更改影响了远程存储库。

我找到了问题的另一个答案有没有办法撤消 git push -f?一开始听起来很有希望,但由于我可能会因为惊慌而第二次搞砸,所以我显然无法滚动终端来确定相关的提交据我了解,恢复并且

git reflog
似乎也没有帮助,因为这个存储库是新克隆的。

>git reflog
7a7a940 (HEAD -> main, origin/main, origin/HEAD) HEAD@{0}: reset: moving to ORIG_HEAD
7a7a940 (HEAD -> main, origin/main, origin/HEAD) HEAD@{1}: rebase (finish): returning to refs/heads/main
7a7a940 (HEAD -> main, origin/main, origin/HEAD) HEAD@{2}: rebase (start): checkout HEAD~7
7a7a940 (HEAD -> main, origin/main, origin/HEAD) HEAD@{3}: rebase (finish): returning to refs/heads/main
7a7a940 (HEAD -> main, origin/main, origin/HEAD) HEAD@{4}: rebase (start): checkout main
7a7a940 (HEAD -> main, origin/main, origin/HEAD) HEAD@{5}: clone: from https://github.com/dimfalk/rainfallr.git

然而,由于每次我伸手去拿一片草叶而不知道自己在做什么时,我感觉自己几乎让事情变得更糟,所以我决定寻求一些帮助。

我是否有机会恢复过去 2 年来“丢失”的 63 个提交,或者它们现在不可避免地丢失了?

编辑:

我刚刚注意到在检查 GitHub 分支活动时似乎仍然列出了所有提交。这有帮助吗?

enter image description here

git git-push
1个回答
0
投票

您可以导航到 GitHub 中的提交,例如https://github.com/dimfalk/your-repo/tree/75c0cac,然后在左上角的分支下拉列表中输入新的分支名称。如果分支尚不存在,GitHub 将主动创建它。

然后,您可以获取此分支以将其本地化,然后将其合并或重置当前分支,以将存储库恢复到所需状态。恢复历史记录后,您可以再次强制推送以同步远程存储库。

有关如何使用 GitHub 的 UI 创建分支的详细信息,请参阅在 Github Web UI 中从 Git 提交 ID 创建分支

PS。删除很少有助于恢复内容。如果搞砸了,请创建备份。

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