按照这些说明(How can I remove a commit on 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”并恢复了我的工作。
答案 0 :(得分:2)
如果您确实要删除GitHub分支上的HEAD(最新)提交,则可以执行以下操作:
git checkout your_branch
git reset --hard HEAD~1
git push --force origin your_branch
但是(斜体字可能甚至不够强调),大多数时候您不想使用此选项。原因是先删除HEAD提交,然后强行推入将重写your_branch
的公共历史记录。反过来,这也会给其他也共享此分支的人带来麻烦。
如果您确定自己是使用此分支的唯一人,则可以进行一次硬重置。否则,我建议使用git revert
:
git revert HEAD
这实际上将在your_branch
顶部添加一个 new 提交,这将在功能上撤消先前的HEAD提交。即使分支由多个人共享,此选项也是安全的。