git如何找到之前commit的信息?

項目是從遠程clone到本地的,現在做了如下操作:

1,commit Test01,git push到origin;commit Test02到本地,不進行push

Test01(commit,然後push)&<--------Test02(commit,沒有push)

2, 此時使用git reset --hard 回退到Test01的歷史紀錄,請問在這個時候,如何操作能找到Test02的記錄並回退?

如果之前記錄了Test02的ID,是可以恢復Test02現場的,因此這個記錄應該是存在的,但是如果沒有記錄ID, 不知道怎麼找到它?


你可以使用 版本回退 git reflog

但是一般不推薦各種 reset 操作,在有不確定的提交時,首選拉一個分支保存,這樣可以快速的在分支之間切換,代碼功能完成後,再合併的主分支上。

同時推薦 SourceTree | Free Git GUI for Mac and Windows 進行可視化操作,特別是分支非常多,多人開發的時候,非常清晰好用。如下圖:


簡單來說:

git reflog

複雜地說:

首先這個問題十分科學,是很明確的問題。這樣的問題肯定是可以搜到的,比如我們用git find lost commit就可以搜到第一篇Stack Overflow上提到git reflog的回答。

其次git reflog這個命令會顯示你之前所有生成過commit的操作(git stash也在裡面),不管出了什麼錯,理論上都是可以搶救的。

最後,commit message記得要認真寫,這樣在git reflog中才好辨認。還有慎用git reset --hard,雖然這個命令很好用。

夾雜私貨:

&> git config --global alias.logg "log --graph --decorate --oneline --abbrev-commit --all"
&> git logg # ← 這個alias可以以命令行圖形化的界面展示commit的關係,我自己很喜歡用

推薦一個很好用的alias(見上面這段配置),還有更多配置可以在我的Git配置中找到


git reflog 命令查看本地版本變化記錄

版本變化記錄只能是在本地查看,不能 push 到遠端

刪除本地庫之後就沒有了


推薦閱讀:

為什麼在 2013 年 1 月 26 日晚訪問 GitHub 時出現該網站的安全證書不受信任的提示?
如果 Github 及其所有相關數據突然消失,世界的正常運行會受到多大的影響,這種影響大致會持續多久?
github第三方ios客戶端哪個好?
工具: git-repo瘦身
有什麼高質量的現代C++風格的開源代碼?

TAG:Git | GitHub | Git版本控制管理書籍 |