撤銷git add操作
git reset HEAD <file> # 取消add操作並保留修改
git checkout -- <file> #若繼續該命令,則會刪除掉剛剛的修改內容
撤銷git commit操作
git reset --soft <commit_id> #可以回退到某個commit並保存之前的修改 <commit_id>從git log中取,取前7位即可
git reset --hard <commit_id> #回退到某個commit不保留之前的修改
撤銷git push操作
push後撤銷該次commit
git revert <commit_id>
原理: git revert 會產生一個新的 commit,它和指定 SHA 對應的 commit 是相反的(或者說是反轉的)。 任何從原先的 commit 裏刪除的內容會在新的 commit 裏被加回去,任何在原先的 commit 里加入的內容會在新的 commit 裏被刪除。這是 Git 最安全、最基本的撤銷場景,因爲它並不會改變歷史 — 所以你現在可以 git push 新的“反轉” commit 來抵消你錯誤提交的 commit。
push後刪除一些不該提交的文件
刪除遠程分支上的文件,同時也刪除了本地倉庫的文件:
git rm file
git commit -m "test delete"
git push origin branch name
刪除遠程分支上的文件,但同時保留本地倉庫的文件
git rm --cached filename
git commit -m "delete"
git push origin branch name
刪除遠程分支上的文件夾,但同時保留本地倉庫的文件夾及文件
git rm -r --cached directory
git commit -m "test"
git push origin branch name