zoukankan      html  css  js  c++  java
  • 捡回reset的未提交修改

    使用 Reflog

    如果一開始沒有記下來 Commit 的 SHA-1 值也沒關係,Git 裡有個 reflog 指令有保留一些紀錄。再次借用上個章節的例子,但這次我改用 --hard 模式來進行 reset:

    $ git reset HEAD~2 --hard
    HEAD is now at 657fce7 add container
    

    不僅 Commit 看起來不見了,檔案也消失了。接著可使用 reflog 指令來看一下紀錄:

    $ git reflog
    657fce7 (HEAD -> master) HEAD@{0}: reset: moving to HEAD~2
    e12d8ef (origin/master, origin/HEAD, cat) HEAD@{1}: checkout: moving from cat to master
    e12d8ef (origin/master, origin/HEAD, cat) HEAD@{2}: checkout: moving from master to cat
    

    當 HEAD 有移動的時候(例如切換分支或是 reset 都會造成 HEAD 移動),Git 就會在 Reflog 裡記上一筆。從上面的這三筆記錄看起來大概可以猜得出來最近三次 HEAD 的移動,而最後一次的動作就是 Reset。所以如果想要取消這次的 Reset,就是「Reset 到它 Reset 前的那個 Commit」(很像饒口令)。在這個例子就是 e12d8ef,所以只要這樣:

    $ git reset e12d8ef --hard
    

    就可以把剛剛 hard reset 的東西再次撿回來了。

  • 相关阅读:
    习题10-2 递归求阶乘和(15 分)
    在过滤器中得到模型状态信息
    理解OAuth 2.0
    asp.net mvc 控制器的依赖注入(使用Ninject)
    web.routing 学习
    深度优先和广度优先的基础应用
    数的全排
    C# 表达式树
    C#中RSA的简单使用
    select into 和insert into select
  • 原文地址:https://www.cnblogs.com/lixiaobin/p/gitcmd.html
Copyright © 2011-2022 走看看