-3

我搞砸了我的代码,可悲的是,我已经做了几次提交,发现了一个看起来像是要修复的神话的错误,所以唯一的解决方案应该是获取我之前上传到 github 的副本(这不是搞砸了上版本)。(哦,感谢伟大的 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 版本中提取?

4

2 回答 2

3

你可以这样做:

git reset --hard <old-commit-id>
git push -f
于 2013-06-01T05:02:07.293 回答
1

万一你做了一个错误的提交并且在它之后你需要一个或多个提交,我宁愿使用交互式变基。例如,您推送三个提交,第一个是糟糕的,另外两个是您需要的。您需要使用命令启动交互式变基

git rebase -i HEAD~3

-i 表示变基是交互式的

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

您需要使用糟糕的提交删除第一行,然后退出文本编辑器。完成变基后,所有错误提交的更改都将被删除。

检查提交历史是否正常。如果是这样,则运行以下命令

git push -f

此命令将在您上次提交时移动分支指针。

有关交互式 rebase 的更多信息,您可以在此处获取http://git-scm.com/book/en/Git-Tools-Rewriting-History

于 2013-06-01T10:50:28.703 回答