当进入装有git的目录里,创建一文件,如

$touch test.txt

这时候,运行git status,就会发现这个文件出现在untracked files中

$git status
On branch master
Your branch is up to date with 'origin/master'.Untracked files:(use "git add <file>..." to include in what will be committed)test.txtnothing added to commit but untracked files present (use "git add" to track)

这时候运行git reset --hard,

$git reset --hard

该命令把tracked file中的改动,即和commit中不一致的全部丢弃。但是,不会影响untracked file,所以这个时候运行git status,结果一样。

要把Untracked files清除掉,要用到git clean

$ git clean -df
Removing test.txt

这里的-d表示对于directory也要深入进去,-f是当clean.requireForce不为false的时候必须要有的。

这时候运行git status,会发现untracked files中已经为空:

$ git status
On branch master
Your branch is up to date with 'origin/master'.nothing to commit, working tree clean

再来说说 .gitignore 文件,

$nano .gitignore

每一行(除掉comment部分)都是一种类型的文件,被git ignore,即忽视的。比方说*.ko,*.mod, *.o 文件,它们都是modules在编译过程中产生的文件。所有符合这些特征的文件,在git status中都不会显示,所以前面我们看不到这些文件(即使有)。

但是,如果运行git clean的时候加上-x选项,.gitignore文件将被忽略,也就是符合.gitignore文件中定义的特征的文件也会被移除。

$git clean -dfx

会出现大量的这类文件被移除

再来谈谈git diff, 如上如果新创建一文件,

$git diff

返回为空,而git status将会显示该文件在untracked files中。

而如果更改一git repo中原有文件,如sound/last.c

$ git diff
diff --git a/sound/last.c b/sound/last.c
index f0bb98780e70..bfa852c64419 100644
--- a/sound/last.c
+++ b/sound/last.c
@@ -7,6 +7,7 @@#include <linux/init.h>#include <sound/core.h>+//try git diffstatic int __init alsa_sound_last_init(void){struct snd_card *card;

会显示修改后文件的不同。实际上是在working directory中的文件和在index中的文件的不同。

运行git status会显示该文件在changes not staged for commit:

$ git status
On branch master
Your branch is up to date with 'origin/master'.Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified:   sound/last.cno changes added to commit (use "git add" and/or "git commit -a")

运行git restore <file>会放弃该改变

$ git restore sound/last.c
$ git status
On branch master
Your branch is up to date with 'origin/master'.nothing to commit, working tree clean

再运行git status该改变已经放弃。

总结,(1) git reset 不会影响untracked files (2) git status 会列出untracked files, 但是.gitignore中规定的类型除外 (3)git clean -dfx会清除在.gitignore中的类型的文件, git clean -df不会。(4) git diff不会显示untracked files,只显示已经在git repo中已有文件的修改。

git reset, git status, git clean, .gitignore, git diff, git restore 的关系梳理相关推荐

  1. Git快速入门-git stash 暂存变更,git reset 撤销commit,git revert 回退远程版本库

    Git快速入门系列文章 - Git快速入门-安装配置篇 - Git快速入门-常用命令之独奏篇 - Git快速入门-常用命令之交响乐篇 - Git快速入门-git stash 暂存变更,git rese ...

  2. git revert和git reset的区别

    git revert 是撤销某次操作,此次操作之前的commit都会被保留 git reset 是撤销某次提交,但是此次之后的修改都会被退回到暂存区 具体一个例子,假设有三个commit, git s ...

  3. git 远程仓库版本的回退以及git reset 几种常用方式记录

    由于 github push 了两个比较潦草的commit, 自己很不满意,又不想重新开vpn进行上传,所以找了一下相关的教程. 最后研究了一下,原理为先在本地还原到你想要的commit,然后强制pu ...

  4. Git的撤销操作 git reset HEAD -- <file>

    在项目中我们也经常会使用到撤销操作 使用这一节我们就讲一讲Git的撤销操作 撤销操作主要有如下几种 git commit   --amend        撤销上一次提交  并讲暂存区文件重新提交 g ...

  5. git reset --hanrd撤回_一篇文章,全面掌握Git

    版本控制 版本控制就是记录项目文件的历史变化.它为我们查阅日志,回退,协作等方面提供了有力的帮助. 版本控制一般分为集中化版本控制和分布式版本控制. 集中化主要的版本数据都保存服务端. 分布式版本数据 ...

  6. git如何查看缓存区文件内容_详解Git工作区、暂存区、历史记录区以及git reset、git revert、git checkout等撤销命令的区别...

    一.可以将git简单的分为三个区域   1.工作区(working directory)    2.暂缓区(stage index)    3.历史记录区(history)    如图: 其中git ...

  7. git reset --hard HEAD 后恢复暂存区文件

    git reset --hard HEAD 后恢复暂存区文件 1.参考资料 git reset–hard后恢复暂存区文件 git reset–hard后恢复暂存区(未提交)文件 关于git reset ...

  8. git reset简介

    本文编辑整理自:http://guibin.iteye.com/blog/1014369 http://hi.baidu.com/tiger_tnt/blog/item/a0464ffa6a8115d ...

  9. Git使用 从入门到入土 收藏吃灰系列 (九) git reset 移除暂存区与版本回退

    文章目录 一.前言 二.Git远程命令实践 2.1git reset 移除暂存区 2.2 git log+git reflog+git reset 版本回退 一.前言 参考安装Git 详细安装教程 参 ...

最新文章

  1. UVA 10954 Add All
  2. https://toonify.photos/ for Disney style
  3. leetcode37 --- solveSudoku(解数独)
  4. 【跃迁之路】【716天】程序员高效学习方法论探索系列(实验阶段473-2019.2.6)...
  5. 微信支付 body不是UTF-8编码以及中文签名错误的问题
  6. 读书笔记《React:引领未来的用户界面开发框架》
  7. 五笔字根表识别码图_五笔输入法口诀(五笔字根表快速记忆图)
  8. ipadpro编写java代码_iPad Pro变生产力工具,你还缺个轻量级浏览器端代码编辑器...
  9. android点击vcf文件,Android vcard使用示例,生成vcf文件
  10. Your Mac is infected with (3) Viruses!
  11. 制作WindowsServer2008镜像上传到OpenStack
  12. 漫谈并发编程:Actor模型
  13. Word中,页眉-编辑页眉中,“链接到前一节页眉”呈灰色,不可点击?
  14. ubuntu安装opencv viz模块
  15. 10分钟用Python制作恋爱日志!
  16. 51单片机 静态数码管显示
  17. redis配置文件样例(二)
  18. Blob开头视频链接如何下载
  19. python使用dohq-tfs操作TFS(Team Foundation Server)的Work Item
  20. 数据科学家定位和职业规划

热门文章

  1. 如何利用码文书把海报图片中的二维码替换成自己的二维码
  2. N的阶乘递归与非递归
  3. .NET Core、Xamarin、.NET Standard和.NET Framework四者之间的区别
  4. 【调研】华图教育:领跑公职培训市场
  5. 第三次郑州.NET俱乐部活动总结
  6. 汇编语言的一些相关资料(上机或者实验)
  7. 软件测试-web自动化测试教程
  8. 解决AMD Software提示图形驱动版本不匹配问题
  9. 湖南计算机应用技术专科学校排名,湖南所有职业技术学院排名
  10. 18项政策奖励助力武汉加快区域金融中心建设,申报奖励以及申报流程汇总