2016年10月28日 星期五

git的各種還原方式

使用git時常會遇到還原問題,要如何回復到某一個commit,或取消commit、add

我整理的個人筆記如下

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  
註:使用前請自行測試

沒有留言:

張貼留言