linux git diff m,git命令——git status、git diff

前言

当对项目做了更改时,我们通常需要知道具体改了哪些文件,哪些文件更改了没有暂存,哪些文件改了并且已加入到暂存区等待下次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] updatedinindex

A [ MD] added to index

D [ M] deleted from index

R [ MD] renamedinindex

C [ MD] copiedinindex

[MARC] index and work tree matches

[ MARC] M work tree changed since index

[ MARC] D deletedinwork 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

不加参数直接输入 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有啥差异,可以执行这个命令。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值