一、rm后要commit一下才會生效,但這樣只是讓文件不再出現在今后的版本中,文件副本仍然會在.git/下(這樣git才能讓誤刪的文件恢復)。
要徹底消滅文件副本,那就要讓文件徹底從歷史中消失,分兩種情況:
1、如果你的文件添加記錄是最近1次,而且沒有別的更改,可以簡單使用reset --hard commit_id來徹底回溯,然后gc一下再上傳就沒問題了。
2、如果是在你N次提交以內的某次,而且同時還有別的重要提交,那最好用rebase合並一下這幾次提交記錄(包括rm的commit),然后再gc提交
二、撤銷commit的一些方法
1、git reset –mixed:此為默認方式,不帶任何參數的git reset,即時這種方式,它回退到某個版本,只保留源碼,回退commit和index信息
2、git reset –soft:回退到某個版本,只回退了commit的信息,不會恢復到index file一級。如果還要提交,直接commit即可
3、git reset –hard:徹底回退到某個版本,本地的源碼也會變為上一個版本的內容
三、其他一些方法
1、git revert 是撤銷某次操作,此次操作之前的commit都會被保留
2、git reset 是撤銷某次提交,但是此次之后的修改都會被退回到暫存區
3、git reset --hard HEAD~1
4、git revert HEAD