经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » 编程经验 » 查看文章
Git 撤销所有未提交(Commit)的内容
来源:cnblogs  作者:舆图易稿  时间:2018/9/25 19:32:21  对本文有异议

撸了好多代码,但是突然设计改了(~~o(>_<)o ~~);或者引入个第三方库,后来又发现用不着,想删掉,但文件太多了(比如几百个);那,怎么办呢,都不想了...Git 比人聪明,所以能很方便的帮我们解决问题。

场景一

需要撤销的内容文件属于未跟踪的状态。如下命令产生的场景:

  1. mkdir git-tmp
  2. cd git-tmp
  3. git init
  4. echo '第1次输入的内容' > file1.log
  5. git status

以上命令产生了file1.log文件,该文件未被执行过git add、也不在版本库中。清除此类未被跟踪的文件:

  1. git clean -fdx

场景二

需要撤销的内容已被git add暂存,但未执行git commit提交。如下命令产生的场景:

  1. mkdir git-tmp
  2. cd git-tmp
  3. git init
  4. echo '第1次输入的内容' > file1.log
  5. git add .
  6. git status

那么执行以下命令即可取消文件的暂存:

  1. git rm --cached -r .

或者,使用:

  1. git reset

也可以取消所有文件的暂存。

然后,我们再执行git clean -fdx清除文件。

场景三

已提交在版本库中的文件发生了变更、但修改的内容未暂存。如下命令产生的场景:

  1. mkdir git-tmp
  2. cd git-tmp
  3. git init
  4. echo '第1次输入的内容' >> file1.log
  5. git add .
  6. git commit -m '第1次提交'
  7. echo '第2次输入的内容' >> file1.log
  8. git status

这种情况,我们可用:

  1. git checkout .

就可以清除所有变更内容。

场景四

已在版本库中的文件发生了变更、且已git add暂存。如下命令产生的场景:

  1. mkdir git-tmp
  2. cd git-tmp
  3. git init
  4. echo '第1次输入的内容' >> file1.log
  5. git add .
  6. git commit -m '第1次提交'
  7. echo '第2次输入的内容' >> file1.log
  8. git add .
  9. git status

这种情况,比场景三仅多了步暂存,那我们可以先取消暂存、然后再检出:

  1. git reset
  2. git checkout .

也就是场景二和场景三的混合情况。

总结

我们以上所有场景都是内容未被提交(commit)的情况下。如果是撤销提交操作,那就是其他方法了。

基于以上,我们发现,如果对于已修改的所有内容,我们都不想要了,想回到最干净的上个提交版本的状态。那么,3个命令就可以搞定一切:

  1. git reset
  2. git checkout .
  3. git clean -fdx

最后,再说个小白都能解决该类问题的工具 —— SourceTree,自行尝试吧。


原文地址: https://shockerli.net/post/git-undo-uncommit-content/

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号