将 Git 上推送的工作恢复到以前的提交



这是我从 assembla 提交的

当我做 git 日志时

nothing to commit, working directory clean
Secret-MacBook-Air:q-sort judyngai$ git log
commit bcab1e2ea50b4ce427d64d20f748c5b64a0d08b3
Author: secret <secret@gmail.com>
Date:   Sat Feb 8 19:39:01 2014 -0500
    Revert "restoring t_c"
    This reverts commit d95c6427869a6924358112a2b6c1d87dc29faa38.
commit cef4c538beeeec37287d57f2b78e7f89412c57e6
Author: Secret <secret@gmail.com>
Date:   Sat Feb 8 19:38:51 2014 -0500
    Revert "Revert "restoring t_c""
    This reverts commit 3c61d17b71ae5017cf364a83c664f0b77603700b.
commit 3c61d17b71ae5017cf364a83c664f0b77603700b
Author: Secret <secret@gmail.com>
Date:   Sat Feb 8 19:35:38 2014 -0500
    Revert "restoring t_c"
    This reverts commit d95c6427869a6924358112a2b6c1d87dc29faa38.
commit d95c6427869a6924358112a2b6c1d87dc29faa38
Author: Secret <secret@gmail.com>
Date:   Sat Feb 8 19:34:44 2014 -0500
    restoring t_c
    Revert "moved to better traco version and added specific load path to config/init/local.rb"
    This reverts commit 202ca306b0076c77748c9d3d0845506a529ab767.
commit 202ca306b0076c77748c9d3d0845506a529ab767
Author: Secret <secret@gmail.com>
Date:   Sat Feb 8 18:17:40 2014 -0500
    moved to better traco version and added specific load path to config/init/local.rb
commit a745f3e353d28b3170f5f30849c9ab31cf35e795
Author: Secret <secret@gmail.com>
Date:   Sat Feb 8 16:00:19 2014 -0500
    removed translatable_column fear clash with traco
commit 634537e267c9035b201060131ae0467f0891a233
Author: Secret <secret@gmail.com>
Date:   Sat Feb 8 15:34:42 2014 -0500
    downgraded traco to be compatible with 1.8.8
commit 5908ea1388d16a2665f90533405e70b1d4c343de
Author: Secret<secret@gmail.com>
Date:   Sat Feb 8 15:05:48 2014 -0500
    trying traco instead of translatable_column
commit 0e0db6404246fd9e239183da437e5bd0a4235ca1
Author: Secret <secret@gmail.com>
Date:   Fri Feb 7 17:30:35 2014 -0500
    uninstalled pg

我想从我发布的日志中永久返回到我的最后一次提交。我正在用新宝石替换旧宝石,但没有成功。我知道这样的事情有很多答案,但每当我尝试时

git revert commit1 commit2 commit3

我最终会陷入一个超脱的脑袋?

我试过了

git reset --hard committhatIwanttoreturnto

但它只是一个临时解决方案,我将支持许多提交。

我试图签出第一次提交,然后恢复

做了

git revert HEAD

两次,最终恢复了我的恢复。 因为我想我可以一个接一个地恢复?

如果你不想在reset --hard之后git push --force,你可以简单地进行一个新的提交,看起来像'committhatIwanttoreturnto',如"还原多个git提交":

确保您首先在正确的分支上(即包含那些还原提交和committhatIwanttoreturnto的分支)

$ git checkout theRightBranch
$ git reset --hard committhatIwanttoreturnto
$ git reset --soft @{1}  # (or ORIG_HEAD)
$ git commit -a

这将在当前分支之上创建一个新的提交,该提交将具有" committhatIwanttoreturnto "的确切内容。

最新更新