Git 撤销所有未提交(Commit)的内容

栏目: 编程工具 · 发布时间: 6年前

内容简介:撸了好多代码,但是突然设计改了(~~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 ,自行尝试吧。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

爆款文案

爆款文案

关健明 / 北京联合出版公司 / 2017-12 / 42.00元

爆款10W+文案是怎么写出来的?前奥美金牌广告人、知乎25K高赞回答者关健明力作《爆款文案》解构文案打动人的4大黄金法则,公开18种文案写法,75篇实战案例,100多幅释义插图,透露把文案变成“印钞机”的私密武器,手把手教你写出爆款销售力。 市面上有很多大而全的文案书,往往比较宽泛,本书只聚焦一个点:文案如何卖掉产品,赚到钱。 前奥美金牌广告人、知乎25K高赞回答者:关键明,擅长撰写销......一起来看看 《爆款文案》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具