我“不小心”向GitHub推送了一个提交。
是否可以删除此提交?
我想恢复提交之前的GitHub存储库。
我“不小心”向GitHub推送了一个提交。
是否可以删除此提交?
我想恢复提交之前的GitHub存储库。
当前回答
如果你这样做是因为你在提交中有敏感数据,那么使用这里的其他答案是不安全的(除了subtux的,我将进一步讨论)。
github指南建议使用外部工具,但我更喜欢使用内置工具。
首先,备份存储库。然后:
git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA' \
--prune-empty --tag-name-filter cat -- --all
之后,确保存储库处于所需的状态。您可能需要与备份进行比较。
如果你确定这是正确的,那么:
#get rid of old unreferenced commits (including the data you want to remove)
git gc --prune=now
git push origin --force --all
您可能需要保留本地备份一段时间,以防万一。
其他回答
git reset HEAD^ --hard
git push origin -f
这对我有用。
要从远程存储库中删除提交,请执行以下操作:
git push -f origin last_known_good_commit:branch_name
要从本地存储库中删除提交,请执行以下操作:
git reset --hard HEAD~1
link
添加/删除文件以获得所需的内容:
git rm classdir
git add sourcedir
然后修改承诺:
git commit --amend
之前的错误提交将被编辑以反映新的索引状态-换句话说,这就像您一开始就没有犯过错误一样
请注意,只有当您还没有按下时,才应该执行此操作。如果您已经推送,那么您只需正常提交修复。
git日志找到要还原的提交git推送原点+7f6d03:主而7f6d03是错误推送提交之前的提交。+用于用力推
就这样。
这里有一个很好的指南,可以轻松简单地解决您的问题!
如果您想删除do interactive rebase,
git rebase-i头~4
4表示要显示的提交总数,计算您的提交并相应地进行更改
并从列表中删除您想要的提交。。。
按Ctrl+X(ubuntu)或:wq(centos)保存更改
第二种方法,进行还原,
git revert 29f4a2 #your commit ID
这将恢复特定的提交