Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何删除github上最近的提交_Git_Github - Fatal编程技术网

如何删除github上最近的提交

如何删除github上最近的提交,git,github,Git,Github,根据这些说明(),我已经尝试了重新基址,但似乎没有任何变化 在我的工作系统A计算机上,我有最新版本的代码。我把它推到回购协议上,然后回家 在这里,有了电脑B,在家里,我最后一次更新代码是在几个月前。显然,我在那天做了一两次改变(没什么重要的),因此有合并冲突。使用github desktop进行“获取”,并尝试合并;由于不了解合并是如何工作的,我把事情搞砸了(结果合并没有包含很多需要的文件)。。。但直到太晚了才知道。然后,我尝试执行另一个github桌面获取/拉取操作,这样所有内容都将同步,并且

根据这些说明(),我已经尝试了重新基址,但似乎没有任何变化

在我的工作系统A计算机上,我有最新版本的代码。我把它推到回购协议上,然后回家

在这里,有了电脑B,在家里,我最后一次更新代码是在几个月前。显然,我在那天做了一两次改变(没什么重要的),因此有合并冲突。使用github desktop进行“获取”,并尝试合并;由于不了解合并是如何工作的,我把事情搞砸了(结果合并没有包含很多需要的文件)。。。但直到太晚了才知道。然后,我尝试执行另一个github桌面获取/拉取操作,这样所有内容都将同步,并且在从我的家庭系统工作后不会再次出现此问题

然后我意识到我丢失了文件,其他文件都是旧的/搞糟了

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

我所要做的就是吹走我当前的本地repo(它没有任何当前的好文件),并告诉github删除最近的提交。然后我将克隆并重新开始家庭系统

但我一辈子都找不到在github上删除提交的方法

编辑:鉴于@Alex Harvey坚持链接指令有效,我回到了链接。第一个答案(本地回购协议中没有任何变化)没有运气,我选择了另一个800多票的选项。我使用了命令:
gitpush-f originhead^:master

不幸的是,这从我的github repo中删除了大约100个最新提交。自从我上一次用github repo同步我的家用计算机以来,它似乎删除了github上的每一次提交—好几个月前

帮忙

EDIT2:很明显,我所在的系统已经几个月没有被使用或同步到github回购了。在过去几个月里,唯一的本地提交是我所做的“合并”提交,它引发了整个混乱。我怀疑向后移动一次提交,然后强制推送,导致github回购的时间回到了几个月前的样子


EDIT3:我去了工作系统,做了一个“git push origin master--force”并恢复了我的工作。

如果你真的想删除GitHub中某个分支上的头(最新)提交,那么你可以这样做:

git checkout your_branch
git reset --hard HEAD~1
git push --force origin your_branch
然而(斜体字可能不够强调),大多数时候你不想使用这个选项。原因是删除头部提交然后强制推送可以有效地重写
您的分支的公共历史记录。这反过来会给共享此分支的任何其他人带来问题

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

git revert HEAD

这实际上会在
您的分支
的顶部添加一个新的提交,这将在功能上撤消以前的头提交。即使分支可以在多人之间共享,此选项也是安全的。

如果确实要删除GitHub中分支的头(最新)提交,则可以执行以下操作:

git checkout your_branch
git reset --hard HEAD~1
git push --force origin your_branch
然而(斜体字可能不够强调),大多数时候你不想使用这个选项。原因是删除头部提交然后强制推送可以有效地重写
您的分支的公共历史记录。这反过来会给共享此分支的任何其他人带来问题

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

git revert HEAD

这实际上会在
您的分支
的顶部添加一个新的提交,这将在功能上撤消以前的头提交。即使分支可以在多人之间共享,此选项也是安全的。

您遵循的这些说明肯定允许您删除Github上的提交。也许可以解释为什么这对你不起作用?@AlexHarvey,我加了一个编辑。情况变得更糟了。在这里回答:当我运行rebase命令并删除行时。。。我的本地回购协议没有任何变化。。。所以我不知道该推什么,单凭这些指令是不可能做到的。你一定是强制推送了一个本地副本,它也丢失了100个提交。@阿列克斯哈维-我添加了另一个编辑。是的。我不知道我在这里能帮上什么忙。我以为你是按照指示做了1078次投票。Git push--force肯定会用您的本地副本覆盖Github副本。您遵循的这些说明肯定会允许您删除Github上的提交。也许可以解释为什么这对你不起作用?@AlexHarvey,我加了一个编辑。情况变得更糟了。在这里回答:当我运行rebase命令并删除行时。。。我的本地回购协议没有任何变化。。。所以我不知道该推什么,单凭这些指令是不可能做到的。你一定是强制推送了一个本地副本,它也丢失了100个提交。@阿列克斯哈维-我添加了另一个编辑。是的。我不知道我在这里能帮上什么忙。我以为你是按照指示做了1078次投票。Git push——force肯定会用本地副本覆盖Github副本。