我想恢复到我的应用程序的备份副本
我已经研究过这个话题,但是我担心我对Git的经验太少,并且可能会通过尝试不同的东西而导致更多的问题,所以我发布了一些信息以找到恢复到我的应用的以前状态的最佳方式。
我承诺进行了更改并删除了以前的分支机构,但在我在外部驱动器上本地备份应用程序之前并未进行。
一切工作都很好(功能方面),正如我在最近发生的变化之前部署到仍在运行的Heroku所证明的那样。
我没有为新的改变创建一个分支,我永远不会再做这件事,而且我正在做主。 错误的信心...
所以,因为一切都变得非常糟糕,所以我决定复制备份的应用程序,并开始新的...但这不起作用。
我认为这可能是一个简单的问题,即恢复对主人未承诺的变化,但我有点冻结,担心我可能会失败。
你能帮我吗???
我正在使用rails 3.2,ruby 1.9.3,git 1.7.4.4
更新
我用过git reset - hard HEAD,现在终端告诉我HEAD现在在820f417微。
我遇到的问题是:
我不知道这可能会或可能不会更改我在textmate中编辑并保存到硬盘驱动器中的文件。
当我在浏览器中打开应用程序时,出现错误:
ActiveRecord::StatementInvalid in StaticPagesController#home
Could not find table 'users'
跟踪:app / helpers / sessions_helper.rb:46:在user_from_remember_token' app/helpers/sessions_helper.rb:16:in
current_user'app / helpers / sessions_helper.rb:9:在signed_in?' app/controllers/static_pages_controller.rb:4:in
signed_in?' app/controllers/static_pages_controller.rb:4:in
在家中'
恢复提交包含在Git Book中 :
如果您没有进行这些更改,则无法恢复到这些更改。 除非我误解了你的意思,并且你希望恢复未提交更改回到最后提交的版本,在这种情况下,这很容易。
这是一个例子:
这是四次修改后的文件。 只有前三个承诺。
> cat file
This is revision 4
获取状态:
> git status
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: file
#
no changes added to commit (use "git add" and/or "git commit -a")
恢复到上次提交的版本:
> git reset --hard HEAD
HEAD is now at e0d512a Revision 3
看看这个文件:
> cat file
This is revision 3
恢复上次提交:
> git revert HEAD
Finished one revert.
[master 92a575c] Revert "Revision 3"
1 files changed, 1 insertions(+), 1 deletions(-)
看看这个文件:
> cat file
This is revision 2
查看修订历史记录:
> git log
commit 92a575c481c69fc1dd809ba02a63009141f95b96
Date: Fri Mar 2 17:13:36 2012 +1100
Revert "Revision 3"
This reverts commit e0d512acebbfb3891888dc59074f7d1f0748bba6.
commit e0d512acebbfb3891888dc59074f7d1f0748bba6
Date: Fri Mar 2 17:11:25 2012 +1100
Revision 3
commit efc6d5af434c56991dabee43f36bc6e7ff284da7
Date: Fri Mar 2 17:11:01 2012 +1100
Revision 2
commit 8b73c59bb517df2589dcd0285a6d19045882ad8e
Date: Fri Mar 2 17:10:20 2012 +1100
Revision 1
>
如果您知道要将恢复工作树的提交的SHA哈希值,则可以使用git checkout <commit> --
获取当前分支上的指定提交。
如果你希望看到文件内容的不同,你可以使用git diff
命令。 如果你想比较你的工作树与你的分支的HEAD(最后一次提交),使用git diff HEAD
。 如果您想查看特定文件中的差异,请在diff命令的末尾列出这些文件。 您可以使用git diff来与外部文件进行比较,但是您应该着重于在查看外部备份之前确定您的存储库是否仍然具有包含所需存储库状态的提交。
当我想抛弃我对承诺文件的最近更改时,请说A.cpp。
我使用git checkout -- A.cpp