我“不小心”将提交推送到了 GitHub。

是否可以删除此提交?

我想将我的 GitHub 存储库恢复为此次提交之前的状态。

有帮助吗?

解决方案

  

注意:请参见替代在下面的评论到git rebase -i -

     

git reset --soft HEAD^

首先,删除你的本地仓库提交。您可以使用git rebase -i做到这一点。例如,如果这是你最后一次提交,你可以做git rebase -i HEAD~2和删除弹出的编辑窗口中的第二行。

然后,强制推动到GitHub的通过使用git push origin +branchName --force

请参阅 Git的魔术第5章:历史的教训 - 和然后一些了解详情(也就是说,如果你想删除旧提交)。

哦,如果你的工作树是脏的,你必须首先做一个git stash,然后git stash apply后。

其他提示

git push -f origin HEAD^:master

这应该 “撤消” 推。

对于一个简单的复归,如果它只是一个错误(也许你分叉回购,则最终推到原来的而不是一个新的)这里的另一种可能性:

git reset --hard 71c27777543ccfcb0376dcdd8f6777df055ef479

显然交换在数量的要返回到提交的数量。

自此以后一切都会一旦你再次按下删除。为了做到这一点,下一个步骤将是:

git push --force
  1. git log找出您想要恢复的提交

  2. git push origin +7f6d03:master而7f6d03是错误推送之前的提交。+ 是为了 force push

就是这样。

这里 是一个非常好的指南,可以解决您的问题,简单易行!

如果你想保持提交更改删除后:

请注意,此解决方案,如果提交被删除的作品是最后一次提交的一个。


1 - 复制你想从日志回到提交参考:

git log

2 - 复位GIT中提交参考:

 git reset <commit_ref>

3 - 藏匿/存储从错误的本地变化致力于推动到远程后在以后使用:

 git stash

4 - 将更改远程存储库,(-f或--force):

git push -f

5 - 获取回本地储存库所存储的改变:

git stash apply

7 - 如果你有在变化未跟踪/新文件,你需要添加它们提交之前的git:

git add .

6 - 添加你需要的任何额外的修改,然后提交所需的文件,(或者用一个点,而不是说明每个文件名,提交在本地存储库中的所有文件“”

git commit -m "<new_commit_message>" <file1> <file2> ...

git commit -m "<new_commit_message>" .

您将需要清除缓存把它彻底消灭。 从混帐此帮助页面将帮助你。 (它帮助我) http://help.github.com/remove-sensitive-data/

使用git revert为恢复您的推动。

  

GIT-复归 - 还原一些现有提交

git revert [--edit | --no-edit] [-n] [-m parent-number] [-s] <commit>...
git revert --continue
git revert --quit
git revert --abort

恢复,相关的补丁引入的变化,并记录了一些新提交该记录下来。这需要你的工作树是干净的(没有从HEAD修改提交)。

1. git reset HEAD^ --hard
2. git push origin -f

这个工作对我来说。

要删除从远程仓库提交:

 git push -f origin last_known_good_commit:branch_name

为了删除你的本地库提交:

git reset --hard HEAD~1

链接

删除最近承诺,让你所做的工作:

git reset --soft HEAD~1

删除最近犯,破坏你所做的工作:

git reset --hard HEAD~1

查找的裁判规范的承诺,你想在Github上你的分支的头,使用如下命令:

git push origin +[ref]:[branchName]

在你的情况,如果你只是想回去一次提交,找裁判对于提交的开始,例如说这是7f6d03,你想改变分支的名称,例如说这是主,并执行以下步骤:

git push origin +7f6d03:master

在加字符被解释为--force,因为你是重写历史,这将是必要的。

请注意,您--force任何时候提交你可能改写其他民族的历史谁合并你的分支。不过,如果你快点抓住问题(谁都合并的分支之前),你不会有任何问题。

您需要知道您从您想要恢复到提交提交哈希值。您可以从GitHub的URL获得它,如: https://github.com/your - 组织/你的项目/款/主

让我们说从哈希提交(要回去)是“99fb454”(长版“99fb45413eb9ca4b3063e07b40402b136a8cf264”),那么所有你需要做的是:

git reset --hard 99fb45413eb9ca4b3063e07b40402b136a8cf264
git push --force

在终端上运行此命令。

git reset HEAD~n

可以除去最后n从本地回购例如提交HEAD〜2。 与你的资料库力混帐推继续。

git push -f origin <branch>

希望这有助于!

要保存的分支和合流结构使用做底垫时--preserve-merges选择是很重要的:

git rebase --preserve-merges -i HEAD^^

保存你的本地修改第一某处侧(备份)

您可以浏览您的最新提交,然后通过点击选择提交哈希 “复制完整的SHA”按钮将其发送到剪贴板。

如果您最后一次提交的哈希值是,让我们说g0834hg304gh3084gh(例如)

您必须运行:

git push origin +g0834hg304gh3084gh:master

使用你之前复制的哈希值,使其成为“HEAD”版本。

添加所需的局部变化。完成的;)

对于 GitHub

  • 在本地存储库中重置您的提交(HARD)
  • 创建一个新分支
  • 推送新分支
  • 删除旧分支(如果要删除主分支,请将新分支作为默认分支)

如果您要删除做互动底垫中,

git rebase -i HEAD~4

相应4 represents total number of commits to display count your commit andchange它

和删除提交您从列表中选择所需...

通过保存改变的 Ctrl + X键(ubuntu的)或的:WQ(centos的)

第二方法,请回复,

git revert 29f4a2 #your commit ID

这将恢复特定提交

这不是很好的重新写的历史。如果我们使用git revert <commit_id>,它创建的所述提交ID的清洁反向提交。

这样,历史不重写,相反,大家都知道,出现了复归。

添加/删除文件得到的东西你想要的方式:

git rm classdir
git add sourcedir

然后修改提交:

git commit --amend

在前面的,错误的承诺将进行编辑,以反映新的索引状态 - 换句话说,它会像你从来没有摆在首位的错误

请注意,你只能这样做,如果你还没有推。如果您有推,那么你只需要提交正常修复。

GitHub的桌面你可以右键点击提交,并恢复它,这将创造一个新的承诺该撤消的更改。

在偶然的承诺仍然会在历史记录(这可能是一个问题,如果,例如,你不小心COMMITED API密钥或密码),但代码将被还原。

这是最简单,最容易的选择,接受的答案是比较全面的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top