我搞砸了我的代码,可悲的是我已经做了几次提交 并发现了一个看起来像是一个神话来修复的错误,所以唯一的解决方法应该是获得我之前上传到github的副本(这不是一个搞砸的版本)。 (哦,谢谢GREAT GITHUB!)
我尝试了git clone https://github.com/username/Spoon-Knife.git
remote: Counting objects: 253, done.
remote: Compressing objects: 100% (150/150), done.
Receiving objects: 64% (162/253), 20.00 Kremote: Total 253 (delta 119), reused
Receiving objects: 66% (167/253), 20.00 KiB | 15 KiB/s
Receiving objects: 100% (253/253), 60.99 KiB | 15 KiB/s, done.
Resolving deltas: 100% (119/119), done.
但它似乎无法正常工作。有些文件保持不变。 我该如何处理?从远程github版本拉出来?
答案 0 :(得分:3)
你可以这样做:
git reset --hard <old-commit-id>
git push -f
答案 1 :(得分:1)
如果你做了一次错误的提交,并且在你提交了一个或多个提交之后,我宁愿使用交互式rebase。例如,您推送三个提交,第一个是糟糕的,另外两个是您需要的。您需要使用命令
启动交互式rebasegit rebase -i HEAD~3
-i表示rebase是交互式的
HEAD~3表示您将使用最后三次提交。
运行此命令文本编辑器将以这样的文本打开
pick f7f3f6d changed my name a bit
pick 310154e updated README formatting and added blame
pick a5f4a0d added cat-file
# Rebase 710f0f8..a5f4a0d onto 710f0f8
#
# Commands:
# p, pick = use commit
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
您需要删除带有糟糕提交的第一行,然后退出文本编辑器。完成rebase后,将删除所有错误提交的更改。
检查提交历史记录是否正常。如果是,则运行以下命令
git push -f
此命令将在最后一次提交时移动分支指针。
有关交互式rebase的更多信息,请访问http://git-scm.com/book/en/Git-Tools-Rewriting-History