git的一些撤銷操做

前言

在用開發項目的時候,常常會寫着寫着會發現寫錯的時候,人生沒有後悔藥,可是git有啊,大不了從頭再來嘛。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了

當咱們修改的代碼已經commit了,咱們只須要執行rem

➜  xiaoyan_es_static git:(master) git reset --hard HEAD^

上一個版本就是HEAD^,上上一個版本就是HEAD^^,固然往上100個版本寫100個^比較容易數不過來,因此寫成HEAD~100。get

代碼已經push到遠程了

少年,你怎麼這麼衝動呢博客

git的一些其它操做

當咱們須要刪除暫存區或分支上的文件, 同時工做區也不須要這個文件了, 能夠使用

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 和公衆號
圖片描述

相關文章
相關標籤/搜索