記一次git硬reset導致的程式碼消失
阿新 • • 發佈:2018-11-22
最近專案比較敢,心情煩躁,想取消一個commit,於是不知咋地鬼使神差地reset current brand to here,就這樣
還點了hard
然後,辛苦寫的程式碼就這樣沒有了...
此次反映出自己對checkout,revert,reset 不熟悉.
補習一下.
git reset
、git checkout
和git revert
是你的 Git 工具箱中最有用的一些命令。它們都用來撤銷程式碼倉庫中的某些更改,而前兩個命令不僅可以作用於提交,還可以作用於特定檔案。- Git 倉庫有三個主要組成——工作目錄,快取區和提交歷史。
- 你傳給
git reset
和git checkout
的引數決定了它們的作用域。如果你沒有包含檔案路徑,這些操作對所有提交生效。
- git checkout [branch/commit]
- reset 引數
-
- --soft – 快取區和工作目錄都不會被改變
- --mixed – 預設選項。快取區和你指定的提交同步,但工作目錄不受影響
- --hard – 快取區和工作目錄都同步到你指定的提交
-
- Revert
- Revert 撤銷一個提交的同時會建立一個新的提交。這是一個安全的方法,因為它不會重寫提交歷史。