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 的東西再次撿回來了。

  • 相关阅读:
    递归函数 二分查找
    内置函数
    迭代器 生成器 推导式
    装饰器函数的有用信息
    函数名 闭包 装饰器
    动态参数 命名空间
    C#_LINQ(LINQ to Entities)
    C#_MVC 自定义AuthorizeAttribute实现权限管理
    C#_MVC3之使用Authorize简单的验证登录(一)
    C#_MVC_分页update
  • 原文地址:https://www.cnblogs.com/lixiaobin/p/gitcmd.html
Copyright © 2011-2022 走看看