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

  • 相关阅读:
    Vim Reference
    Java 8 Consumer、Supplier、Predicate、Function
    Java 8 Stream 用法
    Java 基础 Builder模式
    Spring/Spring-Boot 学习 使用自定义的ArgumentResolver
    架构之分布式图片存储系统架构
    微服务和SOA服务
    Centos 上 Tengine安装
    .NET平台上插拔姿势的AOP
    P1424 刷题记录
  • 原文地址:https://www.cnblogs.com/lixiaobin/p/gitcmd.html
Copyright © 2011-2022 走看看