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版本控制管理書籍 |