如何删除 github 上最近的提交

low*_*ler 2 git github

我已经按照这些说明尝试了 rebase(如何删除 GitHub 上的提交?),似乎没有任何变化。

在计算机 A(我的工作系统)上,我拥有最新版本的代码。我把它推到我的仓库然后回家了。

在这里,在家里的计算机 B 上,我上次更新代码是几个月前。显然我当天做了一两个更改(没什么重要的),因此出现了合并冲突。使用 github 桌面进行“获取”并尝试合并;由于不了解合并的工作原理,我搞砸了一些东西(结果合并没有包含大量所需的文件)......但直到为时已晚才知道。然后我尝试做另一个 github 桌面获取/拉取,这样一切都会同步,并且在我的家庭系统工作后我不会再遇到这个问题。

然后我意识到我丢失了文件,并且其他文件已旧/搞砸了。

在 Github 上,如果我查看提交历史记录……正确的文件是一次提交回来的。

我想做的就是删除我当前的本地存储库(无论如何它都没有任何当前的、好的文件)并告诉 github 删除最近的提交。然后我将克隆并在家庭系统上重新开始。

但我一生都找不到删除 github 上提交的方法。

编辑: 鉴于@Alex Harvey 坚持认为链接的指令有效,我回到了链接。由于第一个答案没有运气(本地存储库中没有任何变化),我选择了另一个拥有 800 多个赞成票的选项。我使用了命令:git push -f origin HEAD^:master

不幸的是,这从我的 github 存储库中删除了大约 100 个最新提交。看起来它删除了 github 上的所有提交,因为我上次将我的家庭计算机与 github 存储库同步 - 几个月前。

帮助?

EDIT2:需要明确的是,我的系统已经有几个月没有被使用或同步到 github 存储库了。过去几个月里唯一的本地提交是我所做的“合并”提交,它引发了整个混乱。我怀疑回退一次提交然后强制推送会导致 github 存储库回到几个月前这个系统的样子。

EDIT3:我进入工作系统并执行了“git push origin master --force”并恢复了我的工作。

Tim*_*sen 6

如果你确实想删除 GitHub 中分支上的 HEAD(最新)提交,那么你可以这样做:

git checkout your_branch
git reset --hard HEAD~1
git push --force origin your_branch
Run Code Online (Sandbox Code Playgroud)

然而(斜体可能还不够强调),大多数时候你不想使用这个选项。原因是删除 HEAD 提交然后强制推送有效地重写了your_branch. 反过来,这可能会给共享该分支的其他人带来问题。

如果您确定您是唯一使用此分支的人,那么硬重置可能是合理的。否则,我建议使用git revert

git revert HEAD
Run Code Online (Sandbox Code Playgroud)

这实际上会在 之上添加一个新的your_branch提交,这将在功能上撤消之前的 HEAD 提交。即使分支由多人共享,此选项也是安全的。