擼了好多代碼,可是忽然設計改了(o(>_<)o);或者引入個第三方庫,後來又發現用不着,想刪掉,但文件太多了(好比幾百個);那,怎麼辦呢,都不想了...Git 比人聰明,因此能很方便的幫咱們解決問題。
須要撤銷的內容文件屬於未跟蹤的狀態。以下命令產生的場景:git
mkdir git-tmp cd git-tmp git init echo '第1次輸入的內容' > file1.log git status
以上命令產生了file1.log
文件,該文件未被執行過git add
、也不在版本庫中。清除此類未被跟蹤的文件:segmentfault
git clean -fdx
須要撤銷的內容已被git add
暫存,但未執行git commit
提交。以下命令產生的場景:app
mkdir git-tmp cd git-tmp git init echo '第1次輸入的內容' > file1.log git add . git status
那麼執行如下命令便可取消文件的暫存:工具
git rm --cached -r .
或者,使用:post
git reset
也能夠取消全部文件的暫存。url
而後,咱們再執行git clean -fdx
清除文件。.net
已提交在版本庫中的文件發生了變動、但修改的內容未暫存。以下命令產生的場景:設計
mkdir git-tmp cd git-tmp git init echo '第1次輸入的內容' >> file1.log git add . git commit -m '第1次提交' echo '第2次輸入的內容' >> file1.log git status
這種狀況,咱們可用:code
git checkout .
就能夠清除全部變動內容。get
已在版本庫中的文件發生了變動、且已git add
暫存。以下命令產生的場景:
mkdir git-tmp cd git-tmp git init echo '第1次輸入的內容' >> file1.log git add . git commit -m '第1次提交' echo '第2次輸入的內容' >> file1.log git add . git status
這種狀況,比場景三僅多了步暫存,那咱們能夠先取消暫存、而後再檢出:
git reset git checkout .
也就是場景二和場景三的混合狀況。
咱們以上全部場景都是內容未被提交(commit)的狀況下。若是是撤銷提交操做,那就是其餘方法了。
基於以上,咱們發現,若是對於已修改的全部內容,咱們都不想要了,想回到最乾淨的上個提交版本的狀態。那麼,3個命令就能夠搞定一切:
git reset git checkout . git clean -fdx
最後,再說個小白都能解決該類問題的工具 —— SourceTree,自行嘗試吧。
原文地址: https://shockerli.net/post/gi...
更多文章請訪問個人我的博客: https://shockerli.net