在用開發項目的時候,常常會寫着寫着會發現寫錯的時候,人生沒有後悔藥,可是git有啊,大不了從頭再來嘛。git
當咱們修改了一個文件,尚未執行git add操做的時候,發現寫錯的時候.spa
➜ xiaoyan_es_static git:(master) ✗ cat README.md es日誌統計查詢 我寫錯了,不想要這行了
咱們能夠使用以下命令,回到最後一次提交的版本版本控制
git checkout -- <file>...
執行完git checkout -- README.md 命令後日誌
➜ xiaoyan_es_static git:(master) ✗ cat README.md es日誌統計查詢
當咱們一不當心將代碼存入了暫存區code
➜ xiaoyan_es_static git:(master) ✗ git add . ➜ xiaoyan_es_static git:(master) ✗ git status On branch master Your branch is up-to-date with 'origin/master'. Changes to be committed: (use "git reset HEAD <file>..." to unstage) modified: README.md
咱們能夠使用以下命令,回到最後一次提交的版本圖片
git reset HEAD <file>...
執行完命令後以下所示開發
➜ xiaoyan_es_static git:(master) ✗ cat README.md es日誌統計查詢 這行寫錯了,可是已經存到暫存區了% ➜ xiaoyan_es_static git:(master) ✗ git status On branch master Your branch is up-to-date with 'origin/master'. Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: README.md no changes added to commit (use "git add" and/or "git commit -a")
當咱們修改的代碼已經commit了,咱們只須要執行rem
➜ xiaoyan_es_static git:(master) git reset --hard HEAD^
上一個版本就是HEAD^,上上一個版本就是HEAD^^,固然往上100個版本寫100個^比較容易數不過來,因此寫成HEAD~100。get
少年,你怎麼這麼衝動呢博客
當咱們須要刪除暫存區或分支上的文件, 同時工做區也不須要這個文件了, 能夠使用
git rm file_path git commit -m 'delete somefile' git push
當咱們須要刪除暫存區或分支上的文件, 但本地又須要使用, 只是不但願這個文件被版本控制, 能夠使用
git rm --cached file_path git commit -m 'delete remote somefile' git push
當咱們對文件或者文件夾執行過chmod操做時,執行git diff會出現相似' old mode xxx new mode xxx',這個時候咱們只須要執行以下命令便可
git config --add core.filemode false
這樣你的全部的git庫都會忽略filemode變動了~
更多文章歡迎關注博客:https://www.zplxjj.com 和公衆號