我整理的個人筆記如下
git checkout HEAD filename # 只針對一個檔,commit,addj都刪掉,回到當次commit;檔案修改的內容也會刪掉 git reset HEAD filename # 取消add的動作。但是commit後就固定了。 git reset 的三個參數選項 git reset SHA # 不會動到檔案內容。但是git 的commit流程/次數/進度,會回那個 SHA。 # 在那個 SHA之後的add, commit就會取消。有三個選項。 # 預設/沒打選項會取消add, commit,檔案不變。 git reset SHA --mixed # 只取消add的動作 git reset SHA --soft # 只取消commit;add動作和檔案修改都還在 git reset SHA --hard # 全部回到SHA那次的commit;檔案內容也是 只刪掉add記錄: git reset HEAD filename # 取消add動作,回到最近一次commit,但不會改檔案 git rm --cached 檔案名稱 # 還沒commit ,可以移除git索引中的內容;變成untracked以後不會再更新git; # 但不會刪原檔案註:SHA就是git log 出現所有commit記錄時,每筆commit後那一長串英數混合字串,如:
$ git log commit c1050b8d522e37591b6d4706baacb9aa8fbc87ea Author: Lee-KangChen Date: Fri Oct 28 15:06:45 2016 +0800
使用時只要打前七個字就可了。
如:
git reset SHA --hard註:使用前請自行測試