内容简介:撸了好多代码,但是突然设计改了(~~o(>_<)o ~~);或者引入个第三方库,后来又发现用不着,想删掉,但文件太多了(比如几百个);那,怎么办呢,都不想了…Git 比人聪明,所以能很方便的帮我们解决问题。需要撤销的内容文件属于未跟踪的状态。如下命令产生的场景:以上命令产生了
撸了好多代码,但是突然设计改了(~~o(>_<)o ~~);或者引入个第三方库,后来又发现用不着,想删掉,但文件太多了(比如几百个);那,怎么办呢,都不想了…Git 比人聪明,所以能很方便的帮我们解决问题。
场景一
需要撤销的内容文件属于未跟踪的状态。如下命令产生的场景:
mkdir git-tmp cd git-tmp git init echo '第1次输入的内容' > file1.log git status
以上命令产生了 file1.log
文件,该文件未被执行过 git add
、也不在版本库中。清除此类未被跟踪的文件:
git clean -fdx
场景二
需要撤销的内容已被 git add
暂存,但未执行 git commit
提交。如下命令产生的场景:
mkdir git-tmp cd git-tmp git init echo '第1次输入的内容' > file1.log git add . git status
那么执行以下命令即可取消文件的暂存:
git rm --cached -r .
或者,使用:
git reset
也可以取消所有文件的暂存。
然后,我们再执行 git clean -fdx
清除文件。
场景三
已提交在版本库中的文件发生了变更、但修改的内容未暂存。如下命令产生的场景:
mkdir git-tmp cd git-tmp git init echo '第1次输入的内容' >> file1.log git add . git commit -m '第1次提交' echo '第2次输入的内容' >> file1.log git status
这种情况,我们可用:
git checkout .
就可以清除所有变更内容。
场景四
已在版本库中的文件发生了变更、且已 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 ,自行尝试吧。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
移动互联网商规28条
王吉斌、彭盾、程成 / 机械工业出版社 / 2014-6 / 49.00
每一次信息技术革命都会颠覆很多行业现有的商业模式和市场规则,当前这场移动互联网变革的波及面之广和蔓延速度之快,完全超出我们的想象。行业的边界被打破并互相融合,在此之前,我们只面临来自同行业的竞争,但是今天,我们不知道竞争对手会来自哪里。也许今天我们还是行业的巨人,但是明天就会被踩在脚下,当我们的体温犹热时,新的巨人已经崛起。诺基亚等传统科技巨头的衰退告诉我们,企业在一个时代的优势,到了另外一个新时......一起来看看 《移动互联网商规28条》 这本书的介绍吧!