前言

当对项目做了更改时,我们通常需要知道具体改了哪些文件,哪些文件更改了没有暂存,哪些文件改了并且已加入到暂存区等待下次commit。上述任务使用git status都可以帮我们解决。但是想要知道文件内部改了哪些地方git status就无能为力了。git status最多只告诉你改没改,改哪了不知道。git diff可以解决这个问题。

git status

git status 命令的输出十分详细,但其用语有些繁琐。 如果你使用 git status -s 命令或 git status --short 命令,你将得到一种更为紧凑的格式输出。 运行 git status -s ,状态报告输出如下:

$ git status -s
M README
MM Rakefile
A lib/git.rb
M lib/simplegit.rb
?? LICENSE.txt

右侧M:该文件被修改了但是还没放入暂存区

左侧M:该文件被修改了且放入暂存区

MM:在工作区被修改并提交到暂存区后又在工作区中被修改了,所以在暂存区和工作区都有该文件被修改了的记录。

A:新添加到暂存区中的文件

??:新添加的未跟踪文件

X          Y     Meaning
-------------------------------------------------
[MD] not updated
M [ MD] updated in index
A [ MD] added to index
D [ M] deleted from index
R [ MD] renamed in index
C [ MD] copied in index
[MARC] index and work tree matches
[ MARC] M work tree changed since index
[ MARC] D deleted in work tree
-------------------------------------------------
D D unmerged, both deleted
A U unmerged, added by us
U D unmerged, deleted by them
U A unmerged, added by them
D U unmerged, deleted by us
A A unmerged, both added
U U unmerged, both modified
-------------------------------------------------
? ? untracked
-------------------------------------------------

git diff

参考:Linux命令——diff

不加参数直接输入 git diff

工作目录里面的文件 与 staging area里面的文件做对比。既然staging area里面有这个文件,那么他一定是tracked的。

git diff 本身只显示尚未暂存的改动,而不是自上次提交以来所做的所有改动。 假设这样一种场景,你clone了一个项目,改了100个文件,然后git add把他们加到暂存区。然后你git diff,会什么也看不到。因为此时staging area有100个文件,但是你工作目录并没有再次修改那100个文件。

退一步讲,你clone了一个项目,改了100个文件。这时候你如果不git add,直接git diff则是可以看到输出的。这时候staging area里面的内容默认是上次cmooit分支的内容。

git diff --cached

Git 1.6.1 及更高版本还允许使用 git diff --staged,效果是相同的,但更好记些。

如果你把修改文件加到staging area,准备commit。在commit之前,想看看我这次提交的内容和上个commit有啥差异,可以执行这个命令。

git命令——git status、git diff的更多相关文章

  1. 每日一条 git 命令行:git clone https://xxxxx.git -b 12.0 --depth 1

    每日一条 git 命令行:git clone https://xxxxx.git -b 12.0 --depth 1 -b 12.0:分支 12.0 --depth 1:depth 克隆深度,1 为最 ...

  2. git 命令参考手册 git中文命令参考手册大全

    git init # 初始化本地git仓库(创建新仓库)git config --global user.name "xxx" # 配置用户名git config --global ...

  3. 常用git命令总结 初始化git库操作 git 子模块

    查看 git status 查看状态 Gitk 界面各个版本查看 添加 Git add filename 添加指定文件 Git add . 操作未暂存的文件 Git add -A 操作所有文件 包括删 ...

  4. webstorm和git安装后,terminal输入git命令,提示'git' 不是内部或外部命令

    最近换了工作,拿到电脑重新搭建编程环境,踩了好多git和sourcetree的坑,就是一直拉不下来代码,晕·~~经过几天的爬坑,终于可以拉取推送代码了!!! 问题:webstorm和git都安装完成, ...

  5. Git命令之:git push

    保护版权:转自,http://www.yiibai.com/git/git_push.html

  6. git 命令整理

    记录一些git 命令,以便自己以后查阅 基本命令   1.git add (保存工作区的变动到暂存区) git add . 和git add -A把整个工作区添加到暂存区 2.git commit ( ...

  7. Git命令详解(一)-个人使用

    本文暂时不会涉及到团队如何使用Git的内容,而是从个人的角度探讨如何用好Git. 约定 绿色的5位字符表示提交的ID,文中用<commit>表示,分别指向父节点.分支用橘色显示,分别指向特 ...

  8. 一天工作所用到的Git命令

    一天工作所用到的Git命令 像大多数新手一样,我一开始是在网上搜索 Git 命令,然后把答案复制粘贴,并没有真正理解它们究竟做了什么. 后来我曾经想过:"如果有一个最常见的 Git 命令的列 ...

  9. GIT命令一页纸

    ,配置用户名和邮箱 $ git config --global user.name "Your Name" $ git config --global user.email &qu ...

  10. Git知识总览(二) git常用命令概览

    上篇博客我们从 git clone 和 git status 两个命令开始,引出了一系列的git操作命令, 请参见:<Git知识总览(一) 从 git clone 和 git status 谈起 ...

随机推荐

  1. k8s、jenkins集成

    参考连接 http://www.uml.org.cn/jchgj/201804252.asp https://huanqiang.wang/2018/03/30/Jenkins-Gitlab-Kube ...

  2. 【Leetcode_easy】1021. Remove Outermost Parentheses

    problem 1021. Remove Outermost Parentheses 参考 1. Leetcode_easy_1021. Remove Outermost Parentheses; 完

  3. 【GStreamer开发】GStreamer播放教程05——色彩平衡

    目标 亮度,对比度,色度和饱和度都是常见的视频调节参数,也是GStreamer里面设置色彩平衡的参数.本教程将展示: 如何发现可用的色彩平衡通道 如何改变它们 介绍 <GStreamer基础教程 ...

  4. Spring Boot 初学避免犯不必要的错误

    创建项目时的目录问题: 新包体(例如controller)必须和启动文件 DemoApplication.java 在同一级目录下,如下 spring boot 初步使用创建新的项目:https:// ...

  5. python selenium学习

    selenium是一个python模块,具有自动化模拟浏览器的功能 selenium的中文文档地址:http://selenium-python-zh.readthedocs.io/en/latest ...

  6. [.Net Core] - 当 .Net Core 版本由 1.x 升级至 2.x 后,Cookie 使用方式变更

    背景 Asp.Net Core 项目升级至 2.x 版本后,Cookie 验证方式需要进行更新. 升级前:.Net Core 1.x Startup.cs public void Configure( ...

  7. java多线程中篇(二) —— 线程的创建和Synchronized锁关键字

    学习之前,先了解线程状态图 说明:线程共包括以下5种状态. 1. 新建状态(New)         : 线程对象被创建后,就进入了新建状态.例如,Thread thread = new Thread ...

  8. hashCode和identifyHashCode的区别

    API: System类提供一个identifyHashCode(Object o)的方法,该方法返回指定对象的精确hashCode值,也是根据该对象的地址计算得到的HashCode值.当某个类的ha ...

  9. python使用ORM之如何调用多对多关系

    在models.py中,我创建了两张表,他们分别是作者表和书籍表,且之间的关系是多对多. # 书 class Book(models.Model): id = models.AutoField(pri ...

  10. GitHub的Fork是什么意思

    GitHub的Fork 是什么意思[转] GitHub Help Simple guide to forks in GitHub and Git GitHub的Fork 是什么意思-N神3-博客园 G ...