撸了好多代码,可是忽然设计改了(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