我“不小心”向GitHub推送了一个提交。

是否可以删除此提交?

我想恢复提交之前的GitHub存储库。


当前回答

如果您想删除do interactive rebase,

git rebase-i头~4

4表示要显示的提交总数,计算您的提交并相应地进行更改

并从列表中删除您想要的提交。。。

按Ctrl+X(ubuntu)或:wq(centos)保存更改

第二种方法,进行还原,

git revert 29f4a2 #your commit ID

这将恢复特定的提交

其他回答

使用git-restore恢复推送。

git-restore-还原一些现有提交git-restore[-edit|--no edit][-n][-m父编号][-s]<commit>。。。git revert--继续git revert—退出git revert—中止

还原相关修补程序引入的更改,并记录记录这些更改的一些新提交。这需要你的工作树是干净的(没有来自HEAD提交的修改)。

注意:git-restore用于记录一些新的提交,以反转一些早期提交的效果(通常只有一个错误的提交)。如果要丢弃工作目录中所有未提交的更改,应该看到git reset,特别是--hard选项。

要保留分支和合并结构,在执行重基时使用--preserve merges选项非常重要:

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

要从远程存储库中删除提交,请执行以下操作:

 git push -f origin last_known_good_commit:branch_name

要从本地存储库中删除提交,请执行以下操作:

git reset --hard HEAD~1

link

如果您希望在删除后保留提交更改:

请注意,如果要删除的提交是最后一次提交的提交,则此解决方案有效。


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> ...

or

git commit -m "<new_commit_message>" .

删除最近的提交,保留已完成的工作:

git reset --soft HEAD~1

删除最近的提交,销毁您已完成的工作:

git reset --hard HEAD~1