=>用reset
解法:
1. git reset --mixed (預設), repo的commit會取消,目前workspace己修改的檔案內容會保留,(就是好像退回到連add都沒做的狀態,好像什麼事都沒發生)
git reset HEAD file
( which by default is using the --mixed
flag) is different in that in the case where the file is already in the repo, it replaces the index version of the file with the one from repo (HEAD), effectively unstaging the modifications to it.3. git reset --hard, repo的commit會取消,會把workspace目前修改的檔案刪除,worksapce中的檔案會回到前一次commit的內容,所有這次改的資料都會不見。
可參考影片: https://www.youtube.com/watch?v=gVByWjwetVc
1. 如果不小心把本地端檔案殺掉了,但是reposity之前有儲存,要如何救回來?很簡單,就再從reposity checkout就好了。
2. Check out 會不會把目前目錄下的資料全部清除?
答案是會全把舊的資料全殺光,所以checkout之前要記得先commit或備份,以免損失慘重。
3. 把檔案用git add加到stage後,在workspace再修改,此時再commit時,檔案會用那個版本的?
Ans: 檔案會用staged的版本。workspace修改的版本或資料並不會commit進去。
(If I modify a file that is added, and retry the commit, the changes aren't recognized, so the commit will fail again.)
解決方法1: 再用git add重做一次就好
注意: 千萬不要亂下git reset -hard,會把workspace目前修改的檔案刪除
https://stackoverflow.com/questions/27776588/modifying-a-file-after-git-add
http://lib.csdn.net/article/git/28621