$ git checkout .
1) 還未添加到暫存區/已添加到暫存區還未提交
1.1新建臨時分支,git checkout -b new_branch,這樣改動會被帶到新分支。而後把非目的分支的修改用git checkout --恢復。
1.2先git stash,而後切換到目的分支,git checkout 【branch】,在目的分支git stash pop便可。這種方式最好理解,就是把改動先放到一個臨時區域,讓git先別管,到了正確的分支再拿出來。
2)已提交到本地倉庫
這種狀況就要有reset了,用git reset HEAD^撤銷最近一次提交,若是有屢次提交的話,查找到對應提交id進行reset就行。git默認的是mixed模式,即撤銷暫存區,保留工做區。這樣你再切分支也還能把改動帶過去。固然加--soft也能夠,這樣能保留暫存區和工做區。
3)已push到遠程倉庫
若是很不幸你已經把誤修改給push了,你須要用到revert命令,先用git log查找到你誤提交的commitId,而後git revert commitId,產生一次逆向提交,來對衝掉以前的。以後再push到遠程就能夠了。
#git忽略而不提交文件
1)從未提交過的文件能夠用.gitignore
這種最簡單,直接把想忽略的文件加入gitignore中忽略提交便可
2)已經推送(push)過的文件,想從git遠程庫中刪除,並在之後的提交中忽略,可是卻還想在本地保留這個文件
$git rm --cached pages/index.wxml
3)已經推送(push)過的文件,想在之後的提交時忽略此文件,即便本地已經修改過,並且不刪除git遠程庫中相應文件
$git update-index --assume-unchanged pages/index.wxml
若是要忽略一個目錄,打開 git bash,cd到 目標目錄下
$git update-index --assume-unchanged $(git ls-files | tr '\n' ' ')